• AlphaBlend參数BLENDFUNCTION


    AlphaBlend是Window自带的GDI函数,在作GUI的时候为了达到更美丽的效果我们经常常使用它.

    BLENDFUNCTION是AlphaBlend用控制透明效果的重要參数.

    定义例如以下:

    typedef struct _BLENDFUNCTION {
      BYTE     BlendOp;
      BYTE     BlendFlags;
      BYTE     SourceConstantAlpha;
      BYTE     AlphaFormat;
    }BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;

    BlendOp: 这个參数必须也仅仅能为AC_SRC_OVER(0x00),意思就是把源图片覆盖到目标之上.

    BlendFlags: 必须为0

    SourceConstantAlpha: 简写为SCA,指定源图片的透明度,这个值是会和源图片的Alpha通道值合并计算的.

    AlphaFormat: 能够填两种,一种是0x00,一种是AC_SRC_ALPHA(0x01).填0的话,AlphaBlend据说就和BitBlt一样了,我没有试验过~填1的话,源DC必须是32位的DC不然的话,AlphaBlend会返回參数错误.

    计算公式(当SCA不是0xFF时):

          输出像素(R,G,B,A) = 源像素(R,G,B,A) * SCA / 0xFF + 目标像素(R,G,B,A) * (1.0 - SCA / 0xFF)

    当SCA是0xFF时,计算公式

          输出像素(R,G,B,A) = 源像素(R,G,B,A) + 目标像素(R,G,B,A) * (1.0 - 源像素(A) / 0xFF)

    混合计算公式

           输出像素(R,G,B) = 源像素(R,G,B) * SCA / 0xFF + 目标像素(R,G,B) * (1.0 - 源像素(A) / 0xFF * SCA / 0xFF)

  • 相关阅读:
    11C++11通用为本,专用为末_2
    10C++11通用为本,专用为末_1
    09C++11保证稳定性和兼容性
    21变量名的力量_2
    NOIP2018 游记
    CF767C 经典的树形DP
    CF1A Theatre Square
    洛谷P1720 月落乌啼算钱
    洛谷P3388 缩点
    NOIP2017D2T1 奶酪 洛谷P3958
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4389865.html
Copyright © 2020-2023  润新知