delphi中的图像缓冲区实现

Art*_*hur 1 delphi buffer drawing canvas image

上下文

我正在绘制画布,它会定期更新并闪烁.逻辑思考我认为这是因为我的重绘方法清除了Canvas,然后一次将一个元素绘制到画布上.所以我的想法是写一个Timage,然后将图片设置为Timage.


信息

这是我的代码

procedure Tmainwindow.Button3Click(Sender: TObject);
var bufferpicture:TImage;
begin

//draw stuff to bufferpicture
  //***
//draw stuff to bufferpicture

myrealpicture.picture:=bufferpicture.picture;

end;
Run Code Online (Sandbox Code Playgroud)

运行代码后,我得到一个错误显示如下. 替代文字


问题 如何将画布设置为另一个画布,因为画布是只读属性?或者有更好的方法来做我想做的事情?

小智 5

  1. 看起来你没有创造 myrealpicture
  2. 我会用这个方法 Assign

    MyRealPicture.Picture.Assign(BufferPicture.Picture);

  3. 您可以使用以下方法将一个画布的内容复制到另一个BitBlt:

    var
      BackBuffer: TBitmap;
    begin
      BackBuffer := TBitmap.Create;
      try
        { drawing stuff goes here}
        BitBlt(Form1.Canvas.Handle, 0, 0, BackBuffer.Width, BackBuffer.Height,
            BackBuffer.Canvas.Handle, 0, 0, SRCCOPY);
      finally
        BackBuffer.Free;
      end;
    end;
    
    Run Code Online (Sandbox Code Playgroud)
  4. 您可以使用该DoubleBuffered物业