你的问题有点混乱,不过你可以把控件的DoubleBuffered属性设为TRUE. 或者自己用手动双缓冲解决问题——总之,就是让你不要直接在控件上画,先画到内存缓冲里,然后一次性贴到前台,就不会闪烁了

解决方案 »

  1.   

    在FormCreate事件里加上
    DoubleBuffered:=True;
      

  2.   

    lockwindowupdate(hwnd);//加锁
    {处理界面}
    lockwindowupdate(0);//解锁
      

  3.   

    Tpaintbox没有DoubleBuffered属性,我把paintbox的父控件的DoubleBuffered属性设置为true了,还是不行。窗体的DoubleBuffered我放在show里面。lockwindowupdate(),用时会出错。我用tmetafile来画,是算在内存里画好的吧!,没有直接在控件上画,把tmetafile画在paintbox时是放在单独一个按钮里。
      

  4.   

    你把整个图都拷过去,当然原来canvas里的东西被覆盖了
      

  5.   

    还是设置相关的DoubleBuffered的属性.