◆OpenPictureDialog预览GIF动画时出现严重闪烁!怎么解决? ( 积分: 50 )

  • 主题发起人 主题发起人 bcfans
  • 开始时间 开始时间
B

bcfans

Unregistered / Unconfirmed
GUEST, unregistred user!
◆◆◆◆◆OpenPictureDialog预览GIF动画时出现严重闪烁!怎么解决?
编程环境:WinXP pro SP2, Delphi7.0

为了使Image支持GIF我安装了GIFImage2.2 for Delphi5这个控件。 (这个版本在Delphi7下应该是不能正常使用的,不过按照一位高手的方法引用了Delphi5的一个线程单元后就能使用了)。

安装后在D7中在对象观察器中为Image装入图片时打开的OpenPictureDialog就支持GIF了,可是我发现右面的图像预览小窗口在预览GIF动画时有非常严重的闪烁。但是把GIF图像载入Image中后,在运行时并不闪烁。

我想是不是因为没开双缓冲的原因,于是修改了TOpenPictureDialog(因为一些私有域无法访问,不能继承只能修改),添加FPicturePanel.DoubleBuffered := True;(FPicturePanel是个TPanl)运行,这回预览窗口不闪了,可是又有问题出现了,在点击其它GIF图片时,新图片显示了而原来的图片并没有被抹去(表现为静止的背景),我晕。

察看VCL源码,主要在TWinControl.WMPaint和TWinControl.WMEraseBkgnd中访问了DoubleBuffered这个属性。在TWinControl.WMEraseBkgnd中如果DoubleBuffered为True则不会调用FillRect,我想那我就自己调用吧,结果还是那样,然后我又试验了N种办法都没行。不说了,郁闷!

◆◆◆◆◆我就是想自定义一个TOpenPictureDialog,使其在预览GIF动画时右面的小预览窗口不闪烁,而且点击其它GIF图片时原图图像不会残留!怎么办????
 
◆◆◆◆◆OpenPictureDialog预览GIF动画时出现严重闪烁!怎么解决?
编程环境:WinXP pro SP2, Delphi7.0

为了使Image支持GIF我安装了GIFImage2.2 for Delphi5这个控件。 (这个版本在Delphi7下应该是不能正常使用的,不过按照一位高手的方法引用了Delphi5的一个线程单元后就能使用了)。

安装后在D7中在对象观察器中为Image装入图片时打开的OpenPictureDialog就支持GIF了,可是我发现右面的图像预览小窗口在预览GIF动画时有非常严重的闪烁。但是把GIF图像载入Image中后,在运行时并不闪烁。

我想是不是因为没开双缓冲的原因,于是修改了TOpenPictureDialog(因为一些私有域无法访问,不能继承只能修改),添加FPicturePanel.DoubleBuffered := True;(FPicturePanel是个TPanl)运行,这回预览窗口不闪了,可是又有问题出现了,在点击其它GIF图片时,新图片显示了而原来的图片并没有被抹去(表现为静止的背景),我晕。

察看VCL源码,主要在TWinControl.WMPaint和TWinControl.WMEraseBkgnd中访问了DoubleBuffered这个属性。在TWinControl.WMEraseBkgnd中如果DoubleBuffered为True则不会调用FillRect,我想那我就自己调用吧,结果还是那样,然后我又试验了N种办法都没行。不说了,郁闷!

◆◆◆◆◆我就是想自定义一个TOpenPictureDialog,使其在预览GIF动画时右面的小预览窗口不闪烁,而且点击其它GIF图片时原图图像不会残留!怎么办????
 
闪烁前执行:
application.processmessage;
 
这个方法不行。
 
用gifimage就行了。不需要安装,直接包含到工程中就行了。
 
楼上的老大,我用的就是gifimage。我晕!
 
后退
顶部