你是否正在寻找关于alphablend的内容?让我把最完整的东西奉献给你:alphablend是Window自带的GDI函数,在作GUI的时候为了达到更漂亮的效果我们常常用它。BLENDFUNCTION是alphablend用控制透明效果的重要参数。
定义如下:typedefstruct_BLENDFUNCTION{BYTEBlendOp;BYTEBlendFlags;BYTESourceConstantAlpha;BYTEAlphaFormat;}BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;BlendOp:这个参数必须也只能为AC_SRC_OVER(0x00),意思就是把源图片覆盖到目标之上。
BlendFlags:必须为0SourceConstantAlpha:简写为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)全部是PBGRA预乘方式:ValueMeaningAC_SRC_ALPHAThisflagissetwhenthebitmaphasanAlphachannel(thatis,per-pixelalpha)。
NotethattheAPIsusepremultipliedalpha,whichmeansthatthered,greenandbluechannelvaluesinthebitmapmustbepremultipliedwiththealphachannelvalue。
Forexample,ifthealphachannelvalueisx,thered,greenandbluechannelsmustbemultipliedbyxanddividedby0xffpriortothecall。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号