首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么去除抖动感

2012-03-02 
如何去除抖动感?A.有一些图片,我需要循环播放(使用Image装入)B.在图片的底部,我实现滚动字幕(使用Panel+La

如何去除抖动感?

A.有一些图片,我需要循环播放(使用Image装入)
B.在图片的底部,我实现滚动字幕(使用Panel+Label+Time控制),使用TRzMarqueeStatus同样如此
C.当我装入图片的时候,Label就会暂停一下(不连续)

请教如何能才能消除?或者有其他什么更好的建议。谢谢

我的一些调试代码如下:

说明:
 1、Panel,Form使用双缓冲
 2、程序在目录机器上运行,目标机器配置有点低。(研华工控主板,主要做嵌入式用的)
 3、目标系统为Winxp,256M,C400
 

Delphi(Pascal) code
{控制Lable滚动,Timer时间间隔为10ms}procedure TForm1.ScrollTimer(Sender: TObject); begin Label1.Left:=Label1.Left-1; if Label1.Left<(Panel1.Left-Label1.Width) then  Label1.Left:=Panel1.Width;end;{间隔1秒随即装图片}procedure TForm1.LoadPicTimer(Sender: TObject);var picName:String;begin  PicName:=FilePath+format('pic%0.4d.jpg',[Random(21)]);//+'.jpg';  if FileExists(PicName) then   { ImageEnView1.IO.LoadFromFile(PicName); //使用ImageEnView一样抖动}      Image1.Picture.LoadFromFile(PicName);end;




[解决办法]
加一句application.ProcessMessages 试试
[解决办法]
DoubleBuffered:=true;
这句加上绘好多了
[解决办法]
用多线程吧
[解决办法]
用delphi的常规方式处理这个不适合,你应该来一些其它的处理。
最粗显的方式是:提前装载图片文件,在切换时以内存数据。
[解决办法]
> 我也使用Canvas画,TextOut.效果还是抖动
你可以使用双重缓冲(double buffering),具体就是:先将绘制的内容画在bitmap上,再将bitmap覆盖到屏幕上。

另外:
>有没有什么方能使用滚动条进度独立出来,不受主程序影响
你先前没说到这个问题。
这个需要使用多线程技术。

热点排行