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)
總結
以上是生活随笔為你收集整理的AlphaBlend參数BLENDFUNCTION介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸭子火锅怎么做好吃啊?
- 下一篇: shellexecute头文件 调用Sh