您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關blendfunction結構參數怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
BLENDFUNCTION通過指定源和目標位圖的透明混合參數來控制透明混合,AlphaBlend是Window自帶的GDI函數,在用GUI的時候為了達到更漂亮的效果我們常常用它,它的參數之一的類型就是BLENDFUNCTION。
blendfunction結構
typedefstruct_BLENDFUNCTION{
BYTEBlendOp;
BYTEBlendFlags;
BYTESourceConstantAlpha;
BYTEAlphaFormat;
}BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;
blendfunction參數編輯
BlendOp指定源混合操作。唯一的源和目標的混合方式已定義為AC_SRC_OVER;
BlendFlags必須是0;
SourceConstantAlpha指定一個alpha透明度值,這個值將用于整個源位圖;該SourceConstantAlpha值與源位圖的每個像素的alpha值組合;如果設置為0,就會假定你的圖片是透明的;如果需要使用每像素本身的alpha值,設置SourceConstantAlpha值255(不透明);
AlphaFormat這個參數控制源和目標的解析方式,AlphaFormat參數有以下值:
AC_SRC_ALPHA:這個值在源有Alpha通道時(也就是操作的圖本身帶有透明通道信息時),提醒系統API調用函數前必須預先乘以alpha值,也就是說位圖上某個像素位置的red、green、blue通道值必須先與alpha相乘。例如,如果alpha透明值是x,那么red、green、blue三個通道的值必須乘以x并且再除以255(因為alpha的值的范圍是0~255),之后才能被調用。
應用備注編輯
1、當AlphaFormat參數的值是AC_SRC_ALPHA,那么源位圖必須是32位深,否則的話,AlphaBland函數將調用失敗
2、當BlendOp參數是AC_SRC_OVER時,源位圖根據alpha透明度值直接覆蓋在目標位圖之上
3、如果源位圖不帶有透明度信息(那樣的話,AC_SRC_ALPHA不設置),將由SourceConstanAlpha的值來決定如何混合源位圖與目標位圖,如下表中所示。表中SCA代表SourceConstantAlpha的值,同樣,SCA除以了255,因為它的范圍是從0到255.
Dst.Red=Src.Red*(SCA/255.0)+Dst.Red*(1.0-(SCA/255.0))
Dst.Green=Src.Green*(SCA/255.0)+Dst.Green*(1.0-(SCA/255.0))
Dst.Blue=Src.Blue*(SCA/255.0)+Dst.Blue*(1.0-(SCA/255.0))
在這種情況下,如果目標位圖有透明度信息,那么混合方式將按照下面的公式來:
Dst.Alpha=Src.Alpha*(SCA/255.0)+Dst.Alpha*(1.0-(SCA/255.0))
關于“blendfunction結構參數怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。