先在内存中建立一个TBitmap或TImage,现在这个TBitmap中作图,然后用
CopyRect将结果搬到屏幕上,效果会好一些。

解决方案 »

  1.   

    TBitmap 中有个Canvas 属性,
    应该不必再多说什么了吧?
      

  2.   

    其实也可以同在VC中一样的。(当然,不是MFC,而是API 的函数)
    先CreateCompatibleDC(Canvas.handle)   //创建内存中的DC
    再CreateCompatibleBitmap(Canvas.handle)
    。(画图)
    BitBlt(...)这样也许要快一些。
      

  3.   

    在Form.OnPaint中调用下面的函数更新就可以了(或者你的定时器或线程中,在线程中要注意同步问题)。
    procedure TForm1.UpdateFormCanvas;
    begin
      with TBitmap.Create do
      try
        Width:=Self.Width; Height:=Self.Height;
        with Canvas do // bitmap's DC
        begin
          // do your paint
        end;
        Windows.BitBlt(
          Self.Canvas.Handle,  // form's HDC
          0,0,100,100,
          Canvas.Handle, // bitmap's HDC
          0,0, // target's top-left corner
          SRCCOPY);
      finally
        Free; // bitmap resource
      end;
    end;