canvas dose not allow drawing错误 我在使用RAVE打印的时候,产生了canvas dose not allow drawing错误。请问canvas dose not allow drawing错误是由于什么原因产生的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 canvas dose not allow drawing说明不能使用canvas具体看canvas帮助 提示不能重画canvas ,估计需要设置什么属性才可以吧。去查查资料 //canvas dose not allow drawingprocedure TForm1.Button1Click(Sender: TObject);Var FCanvas : TCanvas;begin FCanvas := TCanvas.Create; FCanvas.MoveTo(10,10); FCanvas.LineTo(200,200); FCanvas.Free;end;OKprocedure TForm1.Button1Click(Sender: TObject);var rect1, rect2: trect; mCanvas: TCanvas; mHDC: HDC; bitmap : tbitmap;begin bitmap := tbitmap.create; bitmap.loadfromfile('C:\Documents and Settings\Administrator\My Documents\first.bmp'); mCanvas := TCanvas.Create; mHDC := GetDC(button1.Handle); mCanvas.Handle := mHDC; rect1 := bitmap.Canvas.ClipRect; rect2 := Rect(0, 0, button1.Handle, button1.Handle); mCanvas.copyrect(rect2, bitmap.canvas, rect1); bitmap.free; mCanvas.Free; ReleaseDC(button1.Handle, mHDC);end; TO: flyinwuhan(制怒·三思而后行)确实是多线程出的问题,我在一个线程调用RAVE进行打印。能解决一下吗? 是不是线程同步,或者调用RAVE控件的问题? vcl不是线程安全的.你可以在线程中postmessage(wm_print)给一个窗体(例如创建线程的窗体),然后再这个窗体中截取wm_print消息,并进行处理(打印) TO: chw_csdn_chw(chw)——————————————————————————————————————你说的又道理,我试一下,希望能好用。 应该是VCL同步问题,使用下面的方法看看。procedure TMyTreadPrint.Execute;begin inherited; try Synchronize(自己写的过程); except on Ex:exception do fExceptionMessage:=Ex.Message; end;end; MDI显示delphi登陆界面的问题 寻北京的delphi团队或公司开发软件 Delphi动态链接库编程 dephi,有关问题请教 Delphi中怎么接收flash中fscommand发出的命令? 关于AdoDataSet的Locate的问题,求救 FTP下载问题。 如何正确得到.scr文件名的有趣问题 如何把Memo里的某些内容替换? 字体转换 如何不让“另存为……”对话框不要出现左边的“历史、桌面、我的文档、我的电脑、网上邻居”图标? 招聘高级Windows开发程序员
具体看canvas帮助
procedure TForm1.Button1Click(Sender: TObject);
Var
FCanvas : TCanvas;
begin
FCanvas := TCanvas.Create;
FCanvas.MoveTo(10,10);
FCanvas.LineTo(200,200);
FCanvas.Free;
end;
OK
procedure TForm1.Button1Click(Sender: TObject);
var
rect1, rect2: trect;
mCanvas: TCanvas;
mHDC: HDC;
bitmap : tbitmap;
begin
bitmap := tbitmap.create;
bitmap.loadfromfile('C:\Documents and Settings\Administrator\My Documents\first.bmp');
mCanvas := TCanvas.Create;
mHDC := GetDC(button1.Handle);
mCanvas.Handle := mHDC;
rect1 := bitmap.Canvas.ClipRect;
rect2 := Rect(0, 0, button1.Handle, button1.Handle);
mCanvas.copyrect(rect2, bitmap.canvas, rect1); bitmap.free;
mCanvas.Free;
ReleaseDC(button1.Handle, mHDC);
end;
你可以在线程中postmessage(wm_print)给一个窗体(例如创建线程的窗体),然后再这个窗体中截取wm_print消息,并进行处理(打印)
begin
inherited;
try
Synchronize(自己写的过程);
except
on Ex:exception do
fExceptionMessage:=Ex.Message;
end;
end;