如何实现两张图片淡入淡出?(100分)

  • 主题发起人 主题发起人 redsky.l
  • 开始时间 开始时间
R

redsky.l

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各路英雄:如何在Delphi中实现两张图片交换时,出现淡入淡出时特
效,图片格式:BMP、JPG。
 
试试这个控件,可以实现淡入淡出:
http://bes.trendline.co.il/torry/vcl/graphics/harmfade.zip
 
我已下载了此控件(谢谢了), 但无法安装,提示为无mpegplayer.dcu . 我找不到
此文件.可否提供?粗看E文说明,其提供实现功能为 form's OnShow event .我想在
Timage控件上实现此功能,不知可否?据资料介绍:Intel MMX有此功能,可以很方便的
了实现不知如何实现?点解!!!
 
我的机器里也没有mpegplayer.dcu,但我在Delphi4+patch3下安装完全正常,你
用的是哪个版本的Delphi?
 
只有在相同版本下安装才不用dcu文件.
 
本坛控件库里有FXIMAGE,可以用
 
BMP格式可以通过设置不同的canvas.Brush
将原始图像与画刷进行and操作,
将第二副and画刷与画刷进行MergeCopy,
再将两次结果相“或”
两者将溶合,
不断变换画刷即可达到逐渐淡出的效果。
 
这是我写的一个函数,只能将两副画分成16部进行淡出
DHd为目标图的handle,SHd为源图的handle,其他为坐标

procedure Fade(DHd,x,y,width,height,SHd,Sx,Sy:integer);
type ByteArray=array[0..0] of Byte;
SIntArray=Array[0..0] of SmallInt;
var Count,i,step : Integer;
DImg : TBitmap;
PDbit,PSbit : ^byteArray;
PDif : ^SIntArray;
begin
DImg:=TBitmap.Create;
Count:=Height*Width*3;
DImg.PixelFormat:=pf24bit;
DIMg.Width:=Width;
DImg.Height:=Height;
GetMem(PSbit,Count);
GetMem(PDbit,Count);
GetMem(PDif,Count*2);
BitBlt(DImg.Canvas.Handle,0,0,Width,Height,DHD,x,y,SRCCOPY);
Getbitmapbits(DImg.Handle,Count,PDBit);
BitBlt(DImg.Canvas.Handle,0,0,Width,Height,SHD,Sx,Sy,SRCCOPY);
Getbitmapbits(DImg.Handle,Count,PSBit);
For i:=0 to Count-1 do
PDif^:=(PSbit^-PDbit^);
for Step:=1 to 15 do
begin
For i:=0 to Count-1 do
PSbit^:=PDbit^+(Pdif^*Step) shr 4;
SetBitmapBits(DImg.handle,Count,PSbit);
BitBlt(DHD,x,y,Width,Height,DImg.Canvas.Handle,0,0,SRCCOPY);
sleep(100);
End;
BitBlt(DHD,x,y,Width,Height,SHD,SX,SY,SRCCOPY);
FreeMem(PDif,Count*2);
FreeMem(PSBit,Count);
FreeMem(PDBit,Count);
DImg.Free;
end;

 
Read some API reference on Pallatte.
use Pallatte you may do that ,
FXIMAGE is a wonderful component ,full source.
 
Easy

for: A->B

PointA (R1, G1, B1)
PointB (R2, G2, B2)

Ans:
StepR = (R2 - R1) / Step
StepG = (G2 - G1) / Step
StepB = (B2 - B1) / Step

A->S.1->S.2->...->S.n->B

S.i = (R1 + StepR * i, G1 + StepG * i, B1 + StepB * i)
 
receyes,我在其另一台电脑上运行了此控件完全和我想的一样。我用的是Delphi
3.0,我想可能她什么出了毛病。
在此也谢谢各位了!!
 

Similar threads

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