如何实现动画而不闪烁?(50分)

  • 主题发起人 主题发起人 HouBy
  • 开始时间 开始时间
H

HouBy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Delphi中想实现动画效果,可是我用了很多方法,画面仍然闪烁,包括先将图片绘入内存,然后一次性用bitblt绘出到窗体(双缓冲),以及拦截窗体的WM_PAINT消息,进行绘画操作,甚至用了SetClassLong(Handle, GCL_STYLE,GetClassLong( Handle, GCL_STYLE ) or CS_SAVEBITS);可是都不行,难道就不如vb吗,简单的设一下RedDraw属性就能简单的搞定,谁能帮帮我????!!!
 
处理WM_ERASEBKGND消息,大部分闪烁的原因都是它引起的
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd);
begin
//inherited; //inherited不需要了
Msg.Result:=0;
end;
 
在论坛里搜索一下!
 
Delphi 7这方面就好多了。可能是对窗口重绘进行了优化。
 
我也觉得在动画显示上,VB要优于Delphi
 
留mail发一个源代码给你参考
 
hby4249@sina.com
 
ftp://61.152.210.98/Scr.rar
 
看着那条鱼游得那么累,真有点心疼。。。
 
哈哈,你可以自己改改,变成美人鱼嘛
 
to Tassadar:

[BUG]
加/P参数后运行出错,请注意暴露了你编程的粗心喔:
******'' is not a valid integer value.******
小问题咱也得提防。呵呵。。

[附注]
启示来自经历,付出源于热忱。谢谢你。
 
你用的是98吧?/p的参数和2000是不一样的
这个东西大概是两年前做着玩的,没怎么收拾,呵呵
 
Form1.DoubleBuffers:=True;

好像是这么写 用自动补全看看差不多的
 
我用delphi5和delphi6都没有问题,我想delphi7也不回有问题吧。
我找不到原来的代码了,否则可以发给你。我想你“图片绘入内存”出了问题。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部