zoukankan      html  css  js  c++  java
  • 简单的 "双缓冲" 绘图的例子

    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;

  • 相关阅读:
    位置控制
    Scaleform结合C++编程
    使用定点缓存进行绘制
    纹理
    动态规划:背包问题
    希尔排序
    折半插入排序
    快速排序
    上楼梯算法
    归并排序
  • 原文地址:https://www.cnblogs.com/tc310/p/5170540.html
Copyright © 2011-2022 走看看