我长期面临这个问题,并没有找到任何可以帮助我解决它的东西。我使用 TBitmap 接收来自相机(流)的数据,然后将图像保存到磁盘。有时会发生异常。经过几次测试我发现了缺陷:TBitmap的Canvas的handle属性值为0。为了绕过这个问题,当我在handle中检测到这个值为0时,重新启动应用程序(销毁并重新创建TBitmap不起作用),但有时这个错误经常发生。有没有人遇到过这样的问题?我可能做错了什么?欢迎任何帮助。谢谢你。
问问题
369 次
1 回答
-1
TBitmap 在内部为 TBitmap.Canvas 使用 TBitmapCanvas 包装对象。如果您有权访问源 (Graphics.pas),您应该看看。发生错误时,一个或多个 WinAPI GDI 调用可能不处理返回值。一些 GDI 调用失败的可能性很小,因此省略检查每个返回的值以获得一些性能有点像赌博,但在高负载的情况下,这些可能是出现问题的第一个指标反正。
我建议您尝试使用调试 DCU 使用 TBitmap.Canvas 逐步执行您的程序,列出用于使事情正常工作的 GDI 调用,然后对这些操作进行编码,检查返回的值并正确处理任何错误。这应该使您能够了解更多当与相机的连接失败时发生的情况,并且可能会减少使用 TBitmap 的一些开销。
于 2013-04-08T21:04:05.210 回答