간단 한 '더 블 버퍼' 그림 의 예

http://www.cnblogs.com/del/archive/2010/04/19/1715779.html
더 블 버퍼 란 메모리 캔버스 (예: 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;

좋은 웹페이지 즐겨찾기