如何在一个FORM中快速贴图

daidai 2000-07-17 11:06:00
由于对速度要求比较高每隔50毫秒就要刷新一次,如果直接重画的话会出现闪烁,
我在VC中是用直接贴图的方法解决,请问在DEPHI里是不是一样?
...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
IAmKylix 2000-07-18
  • 打赏
  • 举报
回复
JGTM2000说的很好!
BLUECAT 2000-07-17
  • 打赏
  • 举报
回复
先在内存中建立一个TBitmap或TImage,现在这个TBitmap中作图,然后用
CopyRect将结果搬到屏幕上,效果会好一些。
JGTM2000 2000-07-17
  • 打赏
  • 举报
回复
在Form.OnPaint中调用下面的函数更新就可以了(或者你的定时器或线程中,在线程中要注意同步问题)。
procedure TForm1.UpdateFormCanvas;
begin
with TBitmap.Create do
try
Width:=Self.Width; Height:=Self.Height;
with Canvas do // bitmap's DC
begin
// do your paint
end;
Windows.BitBlt(
Self.Canvas.Handle, // form's HDC
0,0,100,100,
Canvas.Handle, // bitmap's HDC
0,0, // target's top-left corner
SRCCOPY);
finally
Free; // bitmap resource
end;
end;
halfdream 2000-07-17
  • 打赏
  • 举报
回复
其实也可以同在VC中一样的。(当然,不是MFC,而是API 的函数)
先CreateCompatibleDC(Canvas.handle) //创建内存中的DC
再CreateCompatibleBitmap(Canvas.handle)
。。。。(画图)
BitBlt(...)

这样也许要快一些。
halfdream 2000-07-17
  • 打赏
  • 举报
回复
TBitmap 中有个Canvas 属性,
应该不必再多说什么了吧?
zzzling 2000-07-17
  • 打赏
  • 举报
回复
到底怎么在bitmap中绘图呢?
daidai 2000-07-17
  • 打赏
  • 举报
回复
能给个例子吗?

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧