使用 AlphaBlend 函数






4.43/5 (16投票s)
2000年2月2日

349538

7437
一个使用 AlphaBlend 函数生成透明启动屏幕的示例应用程序
注意:本文中的代码仅适用于 win98 和 win2000。
想要一个炫酷的启动画面吗? 你觉得通用的启动画面对你的应用程序来说不够好吗? 那么这个示例代码就是为你准备的。
我的半透明启动画面使用了 AlphaBlend
函数。 当我发现这个函数时,我感到非常惊讶! 该函数的作用就像 BitBlt
一样,用于具有透明或半透明像素的位图。 这是 AlphaBlend
函数的语法。
BOOL AlphaBlend( HDC hdcDest,
int nXOriginDest,
int nYOriginDest,
int nWidthDest,
int nHeightDest,
HDC hdcSrc,
int nXOriginSrc,
int nYOriginSrc,
int nWidthSrc,
int nHeightSrc,
BLENDFUNCTION blendFunction
);
重要的参数是最后一个,BLENDFUNCTION
。
typedef struct _BLENDFUNCTION {
BYTE BlendOp;
BYTE BlendFlags;
BYTE SourceConstantAlpha;
BYTE AlphaFormat;
}BLENDFUNCTION;
BlendOp
必须是AC_SRC_OVER
BlendFlags
必须是0
SourceConstantAlpha
必须在 0(透明)和 255(半透明)之间AlphaFormat
必须是AC_SRC_ALPHA
MSDN 说明:BLENDFUNCTION
的 SourceConstantAlpha
成员指定要用于整个源位图的 alpha 透明度值。 SourceConstantAlpha
值与任何逐像素 alpha 值结合使用。 如果将 SourceConstantAlpha
设置为 0
,则假定您的图像是透明的。 当您只想使用逐像素 alpha 值时,将 SourceConstantAlpha
值设置为 255
(表示图像是不透明的)。
请参阅示例应用程序以进行演示。
尽情享受吧!!
阿州大学 C.C. 第 4 成员。
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。