65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 AlphaBlend 函数

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.43/5 (16投票s)

2000年2月2日

viewsIcon

349538

downloadIcon

7437

一个使用 AlphaBlend 函数生成透明启动屏幕的示例应用程序

Sample Image - alphablend.gif

注意:本文中的代码仅适用于 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 说明BLENDFUNCTIONSourceConstantAlpha 成员指定要用于整个源位图的 alpha 透明度值。 SourceConstantAlpha 值与任何逐像素 alpha 值结合使用。 如果将 SourceConstantAlpha 设置为 0,则假定您的图像是透明的。 当您只想使用逐像素 alpha 值时,将 SourceConstantAlpha 值设置为 255(表示图像是不透明的)。

请参阅示例应用程序以进行演示。

尽情享受吧!!

阿州大学 C.C. 第 4 成员。

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.