如题,我有两张图片,想在一个pictrueBox中显示,但是从第一张显示到第二张有一个渐变的效果!
我找了下  需要API:AlphaBlend();但是我不会用,请大侠们帮助在下详细的给点方法!!

解决方案 »

  1.   

    那是GDI的函数了,在GDI+里有LinearGradientBrush类,lz可以在MSDN里搜一下,有相关的例子
      

  2.   

    这个函数有个缺点,就是不支持关键色,不支持Alpha通道。反正一句话,想用简单的,就不要想着太强的功能,一般人也够用了的。
    BOOL AlphaBlend(HDC hdcDest,// 目标设备环境句柄int nXOriginDest,// 目标坐标xint nYOriginDest,// 目标坐标yint nWidthDest,// 目标宽度int nHeightDest,//目标高度HDC hdcSrc,//源设备环境句柄int nXOriginSrc,// 源坐标xint nYOriginSrc,// 源坐标yint nWidthSrc,//源宽度int nHeightSrc,//源高度BLENDFUNCTION blendFunction// 合成方式具体数据结构);BLENDFUNCTION定义了在源位图和目标位图之间进行合成的具体方式,其具体数据成员及含义如下:typedef struct _BLENDFUNCTION {BYTE BlendOp;//AC_SRC_OVERBYTE BlendFlags;//必须为零BYTE SourceConstantAlpha;//位图使用的透明度,0为完全透明、255为正常方式显示BYTE AlphaFormat;//通常为零,如果源位图为32位真彩色,此值可取为AC_SRC_ALPHA}BLENDFUNCTION, PBLENDFUNCTION, LPBLENDFUNCTION;由上面的函数说明我们知道,AlphaBlend能够以特定的透明度来显示一幅位图,那么,如果让AlphaBlend以不同的通道值(从0到255)不断地交替显示两幅图片,这样就实现了“擦除”效果。
      

  3.   


    http://www.codeproject.com/cs/media/perpxalpha_sharp.asp
      

  4.   

    之前的回答似乎有些误导了,lz想要的效果是A图片渐变成B图片的样子么?
      

  5.   

    C#中Vista风格的进度条
    remex 著于2007-7-19 7:31:21
    本文介绍在.net framework下,如果做一个Vista风格进度条的用户控件。该文使用的技术是GDI+。有渐变效果,看看能不能有用处