各位高手们!关于图形逐渐变淡,直到消失怎么实现 ( 积分: 100 )

  • 主题发起人 主题发起人 孤独圣心
  • 开始时间 开始时间

孤独圣心

Unregistered / Unconfirmed
GUEST, unregistred user!
希望各位高手指点,我想做一个关于小程序,其中有如下问题需要解决:
1.画一个月牙形的图案,并可以任意角度旋转;
2,图形现实以后在一定时间内颜色逐渐减淡至消失;
属于菜鸟级的,希望得到各位高手的指点.
 
希望各位高手指点,我想做一个关于小程序,其中有如下问题需要解决:
1.画一个月牙形的图案,并可以任意角度旋转;
2,图形现实以后在一定时间内颜色逐渐减淡至消失;
属于菜鸟级的,希望得到各位高手的指点.
 
1、选画一个圆,再用底色画一个小点圆,盖做大圆一部份,就是月牙形的图案,任意角度
旋转,就是重复画“大圆”,在不同位置(围着大圆)画小圆。
2、这个问题如果是小图没问题,如果是大图,就得用DirectX来解决。小图用象素来画。
下面代码是两张图的片面的渐变,只到另一图消失(Image1消失,Image2显示出来,显示在Image3上):
var
gr,gg,gb:integer;
i,j,k:integer;
TempBmp:TBitmap;
begin
Image3.Visible:=true;
Image3.Width:=Image1.Width;
Image3.Height:=Image1.height;

Image1.Visible:=false;
Image2.Visible:=false; //改变视图显示

TrackBar1.Max:=strtoint(edit1.text);
TrackBar1.Position:=0; //设置滑块

tempbmp:=TBitmap.Create;
tempbmp.Width:=Image1.Width;
tempbmp.Height:=Image1.Height; //创建临时位图,保存变化

//主循环,对每个点进行操作
for K:=0 to TrackBar1.Max do begin
with tempbmp.Canvas do
for i:=0 to Image1.Width do
for j:=0 to Image1.Height do begin
gr:=GetRValue(Image1.Canvas.Pixels[i,j])+
k*(GetRValue(Image2.Canvas.Pixels[i,j])-
GetRValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
gg:=GetGValue(Image1.Canvas.Pixels[i,j])+
k*(GetGValue(Image2.Canvas.Pixels[i,j])-
GetGValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
gb:=GetBValue(Image1.Canvas.Pixels[i,j])+
k*(GetBValue(Image2.Canvas.Pixels[i,j])-
GetBValue(Image1.Canvas.Pixels[i,j])) div TrackBar1.Max;
Pixels[i,j]:=RGB(gr,gg,gb);
end;
Image3.Canvas.Draw(0,0,tempbmp);
Image3.Update;
TrackBar1.Position:=k;
end;

end;
 
谢谢你的答案,我还没有试,不知道是否使用,应该差不多吧,呵呵.以后有机会要多请教了,现在还是菜鸟,[8D]
 
后退
顶部