语境
我正在画画布,它会定期更新,并且会闪烁。
从逻辑上考虑,我认为这是因为我的redraw方法清除了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;
运行代码后,我在下面显示错误。
题
由于canvas是只读属性,如何将一个画布设置为另一个画布?还是有更好的方法来做我想做的事?
最佳答案
看来您没有创建myrealpicture
我会使用方法Assign
MyRealPicture.Picture.Assign(BufferPicture.Picture);
您可以使用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;
您可以只使用
DoubleBuffered
属性