今天做代码,发现在线程里面操作老是提示“Out of system Resource”错误,代码如下:
if ARect.Right - ARect.Left = 0 then
FBitmap.Canvas.StretchDraw(FBitmap.Canvas.ClipRect, ABitmap)
else
FBitmap.Canvas.CopyRect(FBitmap.Canvas.ClipRect, ABitmap.Canvas, ARect);
FBitmap.SaveToFile('e:/111.bmp');
上网查找解决方案,找到了 这篇文章,看来TBitmap的Canvas操作不是线程安全的,改进后即可,代码如下:
FBitmap.Canvas.Lock;
try
if ARect.Right - ARect.Left = 0 then
FBitmap.Canvas.StretchDraw(FBitmap.Canvas.ClipRect, ABitmap)
else
FBitmap.Canvas.CopyRect(FBitmap.Canvas.ClipRect, ABitmap.Canvas, ARect);
finally
FBitmap.Canvas.UnLock;
end;
FBitmap.SaveToFile('e:/111.bmp');
if ARect.Right - ARect.Left = 0 then
FBitmap.Canvas.StretchDraw(FBitmap.Canvas.ClipRect, ABitmap)
else
FBitmap.Canvas.CopyRect(FBitmap.Canvas.ClipRect, ABitmap.Canvas, ARect);
FBitmap.SaveToFile('e:/111.bmp');
上网查找解决方案,找到了 这篇文章,看来TBitmap的Canvas操作不是线程安全的,改进后即可,代码如下:
FBitmap.Canvas.Lock;
try
if ARect.Right - ARect.Left = 0 then
FBitmap.Canvas.StretchDraw(FBitmap.Canvas.ClipRect, ABitmap)
else
FBitmap.Canvas.CopyRect(FBitmap.Canvas.ClipRect, ABitmap.Canvas, ARect);
finally
FBitmap.Canvas.UnLock;
end;
FBitmap.SaveToFile('e:/111.bmp');