如何解决delphi中图形移动中的抖动(闪烁)问题(急!!!!)(100分)

  • 主题发起人 主题发起人 scacy
  • 开始时间 开始时间
S

scacy

Unregistered / Unconfirmed
GUEST, unregistred user!
本人近日做一小程序,是将memo的文字用drawtext绘制到一个image 中并通过时钟控制其上下移动(采用语句为:
image1.top:=image1.top+1;image1.top:=image1.top-1(始终中的语句)能够实现其上下移动可是文字看起来总是
有些抖动长时间看起来眼睛难受死了。不知道各位大虾
有没有高见,恳请赐教!(我曾试过改变时钟的频率,以及其他的诸如通过填充遗留图像的方法都没不尽如人意!)
必谢!
 
用双缓冲应该不会抖的啊,你试试用form1.doublebuffered:=true,不行就自己做缓冲。
 
form1.doublebuffered:=true
挺好用。
 
form1.doublebuffered:=true

肯定可以,我试过 n 次了。
 
首先感谢各位仁兄的帮助,我已经解决了闪烁的问题可是为什么还是有问题.就是为什么那个文字在移动的时候老是哆嗦好像
感冒了的人似的.闹得我也快感冒了!真的不知道如何处理才好!莫非与时钟有关系还是别的什么原因我真的搞不懂,希望各位帮忙
多谢!原因和解决方法!
 
那你是怎么解决的啊?除了文字以外其它的都不抖吗?
要不,把程序贴出来看看。
 
用双缓冲
 
我觉得xujincheng69的说法有问题如果是图象抖动可以用双缓冲,但要是文本抖动那就不行了。
我曾今做过一个例子也遇到过这个问题,可能是跟时钟控件的刷新有关!
我回去看看![purple][/purple][:)]
 
这个方法是可以的,把你的文字转换为图片。
bitmap:=tbitmap.create;
bitmap.canvas.textout(' ',x,y);
bitmap.free;
闪烁要处理消息WM_ERASEBKGND;
把message.result设为0(1?,试一下)即可
 
学习!!
 
提高移动速度就可以消除抖动,如果想慢速移动,必须使用“运动模糊”技术来处理
 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1354567
关注一下吧没有人提起来呀!用MODEM打电话利用PC机的耳机和麦克风,自己编程如何实现?
(我知道有现成的软件可以用,但是我想自己实现这个上东西)
QQ:65466700
MAIL: along@b2sun.com
TEL :13802785865
http://b2sun.com
请各位大侠多多指教!

 
form1.DoubleBuffered:=true; 搞定!肯定可以
 
抖动与时钟频率和图像的绘制速度有关(试想一下时钟频率为0.1s,而绘制一幅图要0.2s的情况)
故要根本解决问题只有DirectX或OpenGL
 

Similar threads

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