canvas do es not allow drawing(100)

  • 主题发起人 主题发起人 royalo
  • 开始时间 开始时间
R

royalo

Unregistered / Unconfirmed
GUEST, unregistred user!
线程中需要重画BITMAP,出现下面错误:‘canvas does not allow drawing’,请问如何解决,谢谢!
 
多线程中,好像不可以直接对控件的属性函数进行操作,如有需要,请先增加一个函数来实现这些功能,假设名称为函数A,然后在原本该调用函数A的地方,通过多线程的Synchronize函数来调用 函数A。有不明白的,请先看一下关于Synchronize的帮助。
 
使用线程画完全没有问题:procedure DrawDeskTop;var Canvas: TCanvas;begin Canvas := TCanvas.Create; Canvas.Handle := GetDC(0); Canvas.Pen.Color := clRed; Canvas.MoveTo(100, 100); Canvas.LineTo(200, 200); ReleaseDC(0, Canvas.Handle); Canvas.Free;end;procedure TForm1.btn1Click(Sender: TObject);var THID: DWORD;begin CreateThread(nil, 0, @DrawDeskTop, nil, 0, THID);end;很显然,你的问题是画只读属性的Canvas
 
线程同步问题
 
同意楼上的:线程同步问题。
 
就是线程问题。检查你的lock, unlock的位置是否合适。
 
大富翁这两天连不上,是这样子的我准备将内存中的图像流写入bitmap,然后通过bitmap.canvas 去进行录制,但是出错
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
后退
顶部