简单的 "双缓冲" 绘图的例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的 "双缓冲" 绘图的例子相关的知识,希望对你有一定的参考价值。
所谓双缓冲就是先画到内存画布(如: TBitmap), 然后再转帖到目的地.
譬如下面小程序:
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 100; Color := clWhite; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Canvas.Pen.Color := Random($FFFFFF); Canvas.MoveTo(Random(ClientWidth), Random(ClientHeight)); Canvas.LineTo(Random(ClientWidth), Random(ClientHeight)); end;
改为双缓冲绘图可以是:
var bit: TBitmap; procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 100; bit := TBitmap.Create; bit.Width := ClientWidth; bit.Height := ClientHeight; end; procedure TForm1.Timer1Timer(Sender: TObject); begin bit.Canvas.Pen.Color := Random($FFFFFF); bit.Canvas.MoveTo(Random(bit.Width), Random(bit.Height)); bit.Canvas.LineTo(Random(bit.Width), Random(bit.Height)); Self.Canvas.Draw(0, 0, bit); end; procedure TForm1.FormDestroy(Sender: TObject); begin bit.Free; end;
以上是关于简单的 "双缓冲" 绘图的例子的主要内容,如果未能解决你的问题,请参考以下文章