.NET的GDI+实现背景的透明处理

经过一天的疯狂网罗,终于解决了实现GDI+绘图时的半透明处理,首先终于可以松一口气了,呵呵。

    记得一年前在做Windows Mobile手的机GDI+时,想实现图片的半透明处理,但是最终以失败告终,因为考虑到要调用Win32的API,而且看着那复杂的计算公式,我放弃了。

    今天,同样为了实现半透明的处理,我首先想到的也是Win32的API函数,但是我相信.NET是不会忘记这些重要的函数的,应该是我还没有找到正确的函数罢了,网罗了一天的资料,终于让我在一本《精通.NET核心技术高级特性》这本书里找到了答案。

    要实现图像的透明处理首先要了解alpha通道(阿尔法通道),这是一个8为的灰度通道,用来记录透明度的。也是现在的32位真彩色中的一个通过,32位真彩色其实就是在24位真彩色(由R,G,B三基色构成,每个颜色值占8位)的基础上增加了一个alpha通道。当两个图像之间进行重叠时,其实是一张图像覆盖了另外一张图像,那么如何能够呈现出一个透明的效果的呢,这时候就要借助alpha这个通道的值了,当两个图像重叠之后若要实现透明处理,则新的像素值应该是源像素值*(alpha/255)+背景像素*(255-alpha)/255。这样处理之后的图片就会呈现出透明的效果了,有兴趣的朋友可以试一试哦~

    那么在.NET的GDI+中如何使用alpha通道呢?.NET的GDI+中提供了Color这样的一个类,该类里面包含一个FromArgb的方法,可以从该方法的名字中得之,这是个将alpha,red,green,blue值进行混合的函数,这个函数的返回值就是一个Color类型的,那么拿这个返回的Color去画直线,填充多边形的时候,都会自动与背景色进行alpha混合了,这样就能得到一个0~255之间的透明度了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值