所谓双缓冲就是先画到内存画布(如: 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.Move����,��ĺTo(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;
TookiQ 需要的是 GDI+ 的, 道理都一样.