AlphaBlend函式,用來顯示具有指定透明度的圖像。
基本介紹
- 中文名:AlphaBlend
- 外文名:AlphaBlend
- 函式功能:顯示具有指定透明度的圖像
- nXoriginDest:X軸坐標
- nYOriginDest:Y軸坐標
簡介,函式功能,函式原型,參數,運用,返回值,備註,速查,聲明,實例,
簡介
函式功能
該函式用來顯示具有指定透明度的圖像。
函式原型
AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction);
參數
該函式用來顯示具有指定透明度的圖像:指向目標設備環境的句柄。
hdcDest:指向目標設備環境的句柄。
nXOriginDest:指定目標矩形區域左上角的X軸坐標,按邏輯單位。
nYOriginDest:指定目標矩形區域左上角的Y軸坐標,按邏輯單位。
nWidthDest:指定目標矩形區域的寬度,按邏輯單位。
hHeightdest:指向目標矩形區域的高度,按邏輯單位。
hdcSrc:指向源設備環境的句柄。
nXOriginSrc:指定源矩形區域左上角的X軸坐標,按邏輯單位。
nYOriginSrc:指定源矩形區域左上角的Y軸坐標,按邏輯單位。
nWidthSrc:指定源矩形區域的寬度,按邏輯單位。
nHeightSrc:指定源矩形區域的高度,按邏輯單位。
最後一個參數blendFunction是一個BLENDFUNCTION結構。BLENDFUNCTION結構控制源和目標點陣圖的混合方式,它的BlendOp欄位指明了源混合操作,但只支持AC_SRC_OVER,即根據源alpha值把源圖像疊加到目標圖像上。OpenGL的alpha混合還支持其他的方式,如常量顏色源。下一個欄位BlendFlags必須是0,也是為以後的套用保留的。最後一個欄位AlphaFormat有兩個選擇:0表示常量alpha值,AC_SRC_ALPHA表示每個像素有各自的alpha通道。
運用
Tmp.Red = Src.Red * SourceConstantAlpha / 255;
Tmp.Green = Src.Green * SourceConstantAlpha / 255;
Tmp.Blue = Src.Blue * SourceConstantAlpha / 255;
Tmp.Alpha = Src.Alpha * SourceConstantAlpha / 255;
Beta = 255 – Tmp.alpha;
Dst.Red = Tmp.Red + Round((Beta * Dst.Red )/255);
Dst.Green = Tmp.Green + Round((Beta * Dst.Green)/255);
Dst.Blue = Tmp.Blue + Round((Beta * Dst.Blue )/255);
Dst.Alpha = Tmp.Alpha + Round((Beta * Dst.Alpha)/255);
返回值
如果函式執行成功,那么返回值為TRUE;如果函式執行失敗,那么返回值為FALSE。
Windows NT:若想獲取更多錯誤信息,請調用GetLastError函式。
備註
如果源矩形區域與目標矩形區域大小不一樣,那么將縮放源點陣圖與目標矩形區域匹配。如果使用SetStretchBltMode函式,那么iStretchMode的值是BLACKONWHITE和WHITEONBLACK,在本函式中,iStretchMode的值自動轉換成COLORONCOLOR。目標坐標使用為目標設備環境當前指定的轉換方式進行轉換。源坐標則使用為源設備環境指定的當前轉換方式進行轉換。如果源設備環境標識為增強型圖元檔案設備環境,那么會出錯(並且該函式返回FALSE)。如果目標和源點陣圖的色彩格式不同,那么AlphaBlend將源點陣圖轉換以匹配目標點陣圖。
AlphaBlend不支持鏡像。如果源或目標區域的寬度或高度為負數,那么調用將失敗。
速查
Windows NT:5.0及以上版本、Windows:98及以上版本、Windows CE:5.0及以上版本支持;頭檔案:wingdi.h;庫檔案:作為一個資源包含在msimg32.dll中。
如何通過API函式AlphaBlend實現vb中的調用?
AlphaBlend函式的定義在 msimg32.dll中,一般Win98、Win2000都帶了這個庫,在編程之前你可以先察看一下該檔案是否存在。AlphaBlend() 在 Visual Basic 6.0 中的套用
聲明
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal tx As Long, ByVal ty As Long, ByVal Tw As Long, ByVal Th As Long, ByVal hdc As Long, ByVal sx As Long, ByVal sy As Long, ByVal sw As Long, ByVal sh As Long, ByVal BLENDFUNCT As Long) As Long
實例
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long
Private Sub Form_Load()
Picture1.AutoSize = True
Picture1.AutoRedraw = True
Picture2.AutoSize = True
Picture2.AutoRedraw = True
End Sub
Private Sub Command1_Click()
Picture1.Picture = LoadPicture("C:\1.bmp")
Picture2.Picture = LoadPicture("C:\2.bmp")
AlphaBlend Picture1.hdc, 10, 10, 100, 100, Picture2.hdc, 20, 20, 100, 100, &H10000 * 128
Picture1.Refresh
End Sub