怎么将带透明渐变的png图像画到image上
如何将带透明渐变的png图像画到image上
有三个image控件:
MainImg、Image1、MaskImg
在timer1中,不断将Image1中的位图画到MainImg上,产生动态效果
MainImg.Canvas.CopyRect(Rect2,Image1.Canvas,SourceRect);
我想在MainImg上画完Image1中的位图后,再画上个渐变效果,但MaskImg加载的源图用的是png格式,CopyRect方法不支持。
如果将MaskImg直接放到MainImg上面的话,虽然实现了效果,但是会闪烁。
请问怎样才能在image控件上画完位图后,再画上个png透明渐变效果呢?(不闪烁)
新手,最好给点代码参考
谢谢
------解决方案--------------------
直接用GDI+,每次再画时,填充一下canvas
有三个image控件:
MainImg、Image1、MaskImg
在timer1中,不断将Image1中的位图画到MainImg上,产生动态效果
MainImg.Canvas.CopyRect(Rect2,Image1.Canvas,SourceRect);
我想在MainImg上画完Image1中的位图后,再画上个渐变效果,但MaskImg加载的源图用的是png格式,CopyRect方法不支持。
如果将MaskImg直接放到MainImg上面的话,虽然实现了效果,但是会闪烁。
请问怎样才能在image控件上画完位图后,再画上个png透明渐变效果呢?(不闪烁)
新手,最好给点代码参考
谢谢
------解决方案--------------------
直接用GDI+,每次再画时,填充一下canvas
- Delphi(Pascal) code
procedure TForm1.btn1click(Sender : TObject); var Bmp : TGpBitmap; gp : TGpGraphics; begin Image1.canvas.fillrect(Image1.canvas.cliprect); Bmp := TGpBitmap.Create('a.png); Gr := GpRect(0,0,Image1.width,Image1.heidth); try gp := TGpGraphics.Create(Image1.Canvas.Handle); gp.DrawImage(Bmp,Gr); finally gp.Free; Bmp.Free; end; end;
------解决方案--------------------
他是用GDI+,这种方法是不错的方法,缺点是在设计期看不到效果。
还有一种方式是用pngButton控件,这样可以不用写一行代码就把png图标载进来了。
另外还有2种:
1.用pngimage控件。
2.用gifimage单元中的方法。前提是要将png转为透明的gif。gif支持透明的。