淡入淡出的问题(150分)

  • 主题发起人 主题发起人 海宁
  • 开始时间 开始时间

海宁

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在DELPHI中实现图象的淡入淡出,若用控件,请提供下载地址。
感激一生!
 
我给你寄个控件, 有源码的, 也有例子.
 
我也想要,如果太大,就告诉我在那down好了。多谢。
 
我也想要,麻烦你upload到tqz那里,或者mail给他,让他放上去
 
I want too except it's fxtools
I have transFx for d3 cracked. very cool
 
其实可以用DirectX做,很方便的。
 
就是要不用directx的
 
wuyi:
我也想要,不知大不大?
 
我这有FixTools,有源代码的,可以到
ftp://ftp.shtdu.edu.cn/incoming/delphi/
 
if you want to run the program in color 256,you can control the palette ,other wise ,you should dec the color value point by point
,i just do the some thing ,so may be you will like this answer.
by the way, if someone know use the dx to handle the same thing,can you tell me?
 
只要每次刷新图片的时候将它的颜色变深变浅就可以了,但如果用Pixels属性更改的画速度上成大问题,用Scanline速度有明显提高,但要做到Realtime还是不够。我知道有个新的Library,直接改变图片的内存,速度特快,改变一张200x200的图片时间在0.5秒以内。
这个library在www.jps.net/gfody有下载。

不过毕竟处理图片仍是一个耗时的事情,如果用这个东西不能达到即使处理的画,可以在每次启动时预先处理,到时播放就是了。
 
如果把图像转换成256色后, 只需要改变Palette即可, 速度很快.

我这里有一个例子, 使用ScanLine对真色彩图进行FadeIn/FadOut操作:
ftp://ftp.hrbucea.edu.cn/Delphi/Graphics/fade.zip
 
如果一定要用真彩,不转换成256色,怎么办比较好?
 
用scanline处理, 要流畅也很简单, 只要在一次WM_PAINT事件完成即可. 实现方法就是设置一
个变量指示是否已经开始淡入淡出(信号灯), 在第一次WM_PAINT消息时置信号灯, 以后收到的
WM_PAINT什么都不做直接置result=0返回即可(另需同时截掉WM_ERASEBKGND消息)
用缓冲技术先分别保存背景和前景, 速度慢而出现闪烁的原因并不是因为paint的速度慢, 而在于
scanline运算上, 所以只要用multithread技术在第一次paint同时先处理好下次要显示的新
的图象即可.
淡入淡出其实只要递减前景显示颜色的百分比:
前景r*百分比+背景r*(1-百分比)
前景g*百分比+背景g*(1-百分比)
前景b*百分比+背景b*(1-百分比)
其实用scanline在pf24bit(真彩)方式下的代码最简单
 
多人接受答案了。
 
后退
顶部