简单的 "双缓冲" 绘图的例子 - 回复 "TookiQ" 的问题
2010-04-19 23:44
399 查看
所谓双缓冲就是先画到内存画布(如: TBitmap), 然后再转帖到目的地.
譬如下面小程序:
改为双缓冲绘图可以是:
TookiQ 需要的是 GDI+ 的, 道理都一样.
譬如下面小程序:
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;
TookiQ 需要的是 GDI+ 的, 道理都一样.
相关文章推荐
- 关于 OnMouseWheelDown、OnMouseWheelUp 等事件的简单例子 - 回复 "巅枫" 的问题
- 简单的 "双缓冲" 绘图的例子
- 简单的 "双缓冲" 绘图的例子(研究一下)
- Dll 使用 PChar 参数的小例子 - 回复 "linximf" 的问题
- 一个定时器相关的简单例子 - 回复 "Timer008" 的问题
- 一个字符串到数组的例子 - 回复"成红"的问题, 对其他朋友参考价值不大
- 如何用 GDI+ 高质量地缩放图片 - 回复 "程序牛" 的问题
- ICE第二篇--一个"hello world"的简单例子
- 看"百度浏览器问题反馈回复"邮件
- 关于"Cannot change version of project facet Dynamic web module to 3.0"问题的简单解决方案(备忘)
- 在 StringGrid 上画线时, 使用 GDI+ 以消除锯齿 - 回复 "gsjn_8888_6666" 的问题
- 一个简单的例子说明stable marriage稳定婚姻匹配问题
- 一个分割文本文件的小程序 - 回复 "jellyang" 的问题
- 用 TStringList 存取结构的例子 - 回复 Test1234 的问题
- 【开放 5月18日 发布】:子数组的最大乘积问题_____问题简单,请思考如何逐步降低时间复杂度,跟帖回复,群内讨论.
- 带进度的文件复制 - 回复 "冷风无泪" 的问题
- 如何把一个字符串填充到一个无类型的指针 - 回复 "豪杰的爸爸" 的问题
- 如何用弹出窗口显示进度 - 回复 "嘿嘿嘿" 的问题
- 用 SuperObject 解析淘宝上的 Json 数据 - 回复 "macrolen" 的问题
- 将 4 个 Byte 合成 1 个 Integer 的五种方法 - 回复 "三足乌" 的问题