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图片时原图图像不会残留!怎么办????
编程环境: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图片时原图图像不会残留!怎么办????