zoukankan      html  css  js  c++  java
  • 简单的 "双缓冲" 绘图的例子(研究一下)

    所谓双缓冲就是先画到内存画布(如: 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;

    http://www.cnblogs.com/del/archive/2010/04/19/1715779.html

  • 相关阅读:
    xml文档格式学习笔记
    Visual Studio学习记录
    Java学习笔记
    C#项目学习记录
    Linux命令行与shell脚本编程大全 学习笔记
    NodeJS (npm) 学习笔记
    Angular学习笔记
    TypeScript学习笔记
    java 项目相关 学习记录
    docker学习记录
  • 原文地址:https://www.cnblogs.com/findumars/p/5342735.html
Copyright © 2011-2022 走看看