我長期面對這個問題,並沒有找到任何可以幫助我解決問題的東西。 我使用TBitmap接收來自相機(流)的數據,然後將圖像保存到磁盤。 有時會發生異常。經過幾次測試後,我發現缺陷:TBitmap的Canvas的handle屬性值爲0.要繞過這個問題,當我在句柄中檢測到這個值0時,重新啓動應用程序(銷燬並重新創建TBitmap不起作用),但有時這個錯誤經常發生。有沒有人有這樣的問題?我可能做錯了什麼?歡迎任何幫助。謝謝。Delphi7:TBitmap.Canvas.Handle = 0
0
A
回答
-1
TBitmap內部使用TBitmap.Canvas的TBitmapCanvas包裝器對象。如果你有權訪問源代碼(Graphics.pas),你應該看看。機會是一個或多個WinAPI GDI調用在出錯時不處理返回值。一些GDI電話的失敗機率很小,因此忽略檢查每個返回的值以獲得一點性能是有點冒險的,但在高負載情況下,這可能是事情出錯的第一個指標無論如何。
我建議你嘗試使用調試DCU來逐步使用TBitmap.Canvas程序,列出用於使事情工作的GDI調用,然後編寫這些操作來檢查返回值並正確處理任何錯誤。這應該使您能夠了解當相機連接失敗時發生的更多情況,並且可能會減少使用TBitmap所帶來的一些開銷。
相關問題
- 1. 如何獲得靜態Tbitmap.canvas.handle?
- 2. delphi7皮膚
- 3. Delphi7的CustomImageList問題
- 4. 動態組件創建Delphi7
- 5. 在delphi7中使用Interbase
- 6. 在delphi7中使用WordApplication
- 7. 在delphi7中執行swf
- 8. 數據擬合delphi7組件
- 9. 地理位置在Delphi7 TWebBrowser
- 10. Delphi7多線程混淆
- 11. Delphi7的,隨機化,選擇隨機數從1到6,但不爲0
- 12. 德爾福HID Delphi7和德爾福XE2
- 13. WCF Delphi7方法輸入參數
- 14. 如何增加Delphi7中的MessageDlg寬度?
- 15. 未聲明的標識符TEncoding delphi7
- 16. Delphi7的Canvas.TextOut不能寫入新線
- 17. 在Delphi7 TListView中顯示(Synopse)SQLite3表列
- 18. 在perl中加密,在delphi7中解密
- 19. 在delphi7中安全地刪除文件
- 20. Delphi7,加載不是BMP的圖像
- 21. Delphi7從項目中刪除/恢復MAINICON
- 22. WinForms浮動窗口(如Delphi7 IDE)
- 23. Delphi7 + ZeosDB日期格式錯誤
- 24. Delphi7 TeeChart v4圖例 - 如何滾動?
- 25. 使用Delphi7的內存問題XMLDoc
- 26. Delphi7中的多行參數TAdoQuery
- 27. Delphi7,創建組合框項目
- 28. 我正在尋找delphi7的profgrid組件
- 29. 用indy delphi7發送表情符號
- 30. 0 + 0 + 0 ... + 0!= 0
看起來您的代碼中存在一個錯誤。所有的位圖訪問是否發生在同一個線程中? – 2013-04-08 20:38:23
不是,它在所有跨線程訪問中受關鍵部分的保護。 – Valmir 2013-04-09 13:29:49
就夠了。你不需要使用'Lock'。我必須說,我很驚訝你忘了提到代碼的線程方面。 – 2013-04-09 13:31:59