请输入您要查询的百科知识:

 

词条 AlphaBlend
释义

简介

函数功能

该函数用来显示具有指定透明度的图像。

函数原型

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:指定目标矩形区域的宽度,按逻辑单位。

hHeghtdest:指向目标矩形区域的高度,按逻辑单位。

hdcSrc:指向源设备环境的句柄。

nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。

nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。

nWidthSrc:指定源矩形区域的宽度,按逻辑单位。

nHeightSrc:指定源矩形区域的高度,按逻辑单位。

blendFunction:指定用于源位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。源和目标混合功能当前只限为AC_SRC_OVER。

最后一个参数blendFunction是一个BLENDFUNCTION结构。BLENDFUNCTION结构控制源和目标位图的混合方式,它的BlendOp字段指明了源混合操作,但只支持AC_SRC_OVER,即根据源alpha值把源图像叠加到目标图像上。OpenGL的alpha混合还支持其他的方式,如常量颜色源。下一个字段BlendFlags必须是0,也是为以后的应用保留的。最后一个字段AlphaFormat有两个选择:0表示常量alpha值,AC_SRC_ALPHA表示每个像素有各自的alpha通道。

运用

1.如果AlphaFormat字段为0,源位图中的所有像素使用同样的常量alpha值,即SourceConstantAlpha字段中的值,该值实际上是0和255,而不是0和1。这里0表示完全透明,255表示完全不透明。目标像素以255-SourceConstantAlpha值作为alpha值。

2. 如果AlphaFormat字段的值是AC_SRC_ALPHA,源设备表面的每个像素必须有各自的alpha通道。即,必须是32-bpp的物理设备上下文,或是选中了32-bpp DDB和DIB段的内存设备上下文。这些情况下,每个源像素有4个8位通道:红、绿、蓝和alpha。每个像素的alpha通道和SourceConstantAlpha字段一起用于把源和目标混合起来。实际用于计算的运算式如下:

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

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/15 22:42:01