我对同一个image 的画板进行重复“画”输出文字,
在开始运行时正常,但在运行后出现这样的提示
Canvas does not allow drawing
这该怎么解决

解决方案 »

  1.   

    一个Timage,如果你加了图片后是不能绘制的,如果你想绘制的话,那么再加一个同样大小的Timage,然后设置为透明,在上层,然后就可以在这个新加的Tiamge中绘制了,试试吧
      

  2.   

    我来回答你,你在 Canvas 上画,如果系统没有来的急对上次的画消息进行处理的时候,你这个画事件又触发了,多发于,程序正在画图期间你去放大,缩小,移动,或 Resize 窗体,或者在画图窗体上面有其它的窗体正在拖放,总之是产生 WM_Paint 消息的进候啦,
    这个时候你的解决办法就是:
    procedure XXX();
    begin
      Canvas.Lock()
      //你的画图过程  
      Canvas.UnLock()
    end;
    //Canvas 的 Lock 和 Unlock 具体是什么意思,看看帮助就知道了。
    //其主目的是处理并发用的。
    //小问题。不怕不怕
      

  3.   

    //给你个例子:
    procedure MyTextOut(ACanvas:TCanvas;X,Y:Integer;Text:string);
    begin  ACanvas.Lock;
      ACanvas.TextOut(X,Y,Text);
      ACanvas.UnLock;  //你调试的时候看看   ACanvas.LockCount 就知道,
      //这个画布现在是不是正在执行其它的画
    end;