发布网友 发布时间:2024-10-02 02:24
共2个回答
热心网友 时间:2024-11-06 04:46
(第一次回答问题,希望能拿到分)
PNG的透明效果是通过Alpha混合实现的,通常情况下,Alpha混合使用下面的计算公式:
Dest = Src * (Alpha/255) + Dest * (1-Alpha/255) 【公式1】
变量说明:
Dest 目标像素的RGB值
Src 源像素的RGB值,在这里PNG就是源
Alpha 源像素的Alpha通道值
在Windows编程中,使用函数AlphaBlend实现Alpha混合,但是该函数的Alpha混合公式为:
Dest = Src + Dest * (1-Alpha/255) 【公式2】
(注:实际情况要稍微复杂一点,公式2只是其中一个特例,但也是最常用的一个特例。完整的计算公式参见MSDN中AlphaBlend的帮助)
公式2中,源没有乘以Alpha值,而是直接叠加至目标,显示效果会比公式1亮一些。
因此结论就出来了:
暗一些的蝴蝶使用了公式1
亮一些的蝴蝶使用了公式2(AlphaBlend函数)。下图是调用AlphaBlend的效果:
由于AlphaBlend的特立独行,为了实现与大多数软件一致的显示效果,我在使用AlphaBlend前,都要使用工具软件将PNG中透明背景像素的颜色值变成黑色(0),否则透明背景会显示出来。
热心网友 时间:2024-11-06 04:43
一般我们都是先创建一个 Bitmap bmp;