溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

blendfunction結(jié)構(gòu)參數(shù)怎么用

發(fā)布時間:2021-09-22 13:50:06 來源:億速云 閱讀:182 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)blendfunction結(jié)構(gòu)參數(shù)怎么用,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

  BLENDFUNCTION通過指定源和目標(biāo)位圖的透明混合參數(shù)來控制透明混合,AlphaBlend是Window自帶的GDI函數(shù),在用GUI的時候?yàn)榱诉_(dá)到更漂亮的效果我們常常用它,它的參數(shù)之一的類型就是BLENDFUNCTION。

  blendfunction結(jié)構(gòu)

  typedefstruct_BLENDFUNCTION{

  BYTEBlendOp;

  BYTEBlendFlags;

  BYTESourceConstantAlpha;

  BYTEAlphaFormat;

  }BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;

  blendfunction參數(shù)編輯

  BlendOp指定源混合操作。唯一的源和目標(biāo)的混合方式已定義為AC_SRC_OVER;

  BlendFlags必須是0;

  SourceConstantAlpha指定一個alpha透明度值,這個值將用于整個源位圖;該SourceConstantAlpha值與源位圖的每個像素的alpha值組合;如果設(shè)置為0,就會假定你的圖片是透明的;如果需要使用每像素本身的alpha值,設(shè)置SourceConstantAlpha值255(不透明);

  AlphaFormat這個參數(shù)控制源和目標(biāo)的解析方式,AlphaFormat參數(shù)有以下值:

  AC_SRC_ALPHA:這個值在源有Alpha通道時(也就是操作的圖本身帶有透明通道信息時),提醒系統(tǒng)API調(diào)用函數(shù)前必須預(yù)先乘以alpha值,也就是說位圖上某個像素位置的red、green、blue通道值必須先與alpha相乘。例如,如果alpha透明值是x,那么red、green、blue三個通道的值必須乘以x并且再除以255(因?yàn)閍lpha的值的范圍是0~255),之后才能被調(diào)用。

  應(yīng)用備注編輯

  1、當(dāng)AlphaFormat參數(shù)的值是AC_SRC_ALPHA,那么源位圖必須是32位深,否則的話,AlphaBland函數(shù)將調(diào)用失敗

  2、當(dāng)BlendOp參數(shù)是AC_SRC_OVER時,源位圖根據(jù)alpha透明度值直接覆蓋在目標(biāo)位圖之上

  3、如果源位圖不帶有透明度信息(那樣的話,AC_SRC_ALPHA不設(shè)置),將由SourceConstanAlpha的值來決定如何混合源位圖與目標(biāo)位圖,如下表中所示。表中SCA代表SourceConstantAlpha的值,同樣,SCA除以了255,因?yàn)樗姆秶菑?到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))

  在這種情況下,如果目標(biāo)位圖有透明度信息,那么混合方式將按照下面的公式來:

  Dst.Alpha=Src.Alpha*(SCA/255.0)+Dst.Alpha*(1.0-(SCA/255.0))

關(guān)于“blendfunction結(jié)構(gòu)參數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI