alphablending_alphaphi是什么意思

alphablending_alphaphi是什么意思AlphaBlend该函数显示拥有透明或半透明像素的位图

alphablending_alphaphi是什么意思 

AlphaBlend 

 

该函数显示拥有透明或半透明像素的位图。 

Syntax

BOOL 
AlphaBlend
(

    
HDC   
hdcDest
,

    
int     
nXOriginDest
,  
int   
nYOriginDest
,  
int   
nWidthDest
,  
int   
nHeightDest
,

    
HDC   
hdcSrc
,

    
int     
nXOriginSrc
,    
int   
nYOriginSrc
,    
int   
nWidthSrc
,   
int   
nHeightSrc
,

    
BLENDFUNCTION  
blendFunction


    );

Parameters 

hdcDest: [in] 目标DC的句柄

nXOriginDest、nYOriginDest: [in] 目标矩形左上角X坐标和Y坐标,按逻辑单元

nWidthDest、nHeightDest: [in] 目标矩形的宽度和高度,不能为负数,按逻辑单元

hdcSrc: [in] 源DC的句柄

nXOriginSrc、nYOriginSrc: [in] 源矩形左上角X坐标和Y坐标,按逻辑单元

nWidthSrc、nHeightSrc: [in] 源矩形的宽度和高度,不能为负数,按逻辑单元

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

Return Value 

如果成功,返回TRUE;失败返回FALSE

获取扩展的错误信息,调用 GetLastError , GetLastError会返回:ERROR_INVALID_PARAMETER,代表有一个或多个输入参数错误。

Remarks 

   如果源矩形和目标矩形大小不同,源位图被缩放以匹配目标矩形。如果使用SetStretchBltMode 函数,iStretchMode 值自动转换为COLORONCOLOR 
   目标坐标使用为目标设备环境指定的转换方式进行转换。源坐标则使用为源设备环境指定的当前转换方式进行转换。
   如果源设备环境标识为增强型图元文件设备环境,那么会出错(并且该函数返回FALSE)。
   如果目标和源位图的色彩格式不同,那么AlphaBlend将源位图转换以匹配目标位图。
   AlphaBlend不支持镜像。如果源或目标区域的宽度或高度为负数,那么调用将失败。
   当在打印机上显示时,首先调用 GetDeviceCaps 并传入 SHADEBLENDCAPS 参数检测打印机是否支持 AlphaBlend 混合。记住,对于显示DC,所有混合操作都被支持而且这些标志代表操作是否支持加速。
   源矩形必须位于源表面内(即,源矩形范围不能超出源位图的范围),否则将发生错误,函数返回FALSE.
   BLENDFUNCTION 结构的 SourceConstantaAlpha 成员指定使用在整个源位图上的 alpha 透明值。SourceConstantAlpha 值和每个像素的alpha值合并。如果 SourceConstantAlpha 为0,那么图像就为完全透明;如果 SourceConstantAlpha 为255,则图像为不透明。 

Requirements 

Header: windows.h 

Library: coredll.lib 

Windows Mobile: Windows Mobile Version 5.0 and later  

 

BLENDFUNCTION

 

该结构控制指定用于源位图和目标位图使用混合功能 

Syntax

typedef struct _BLENDFUNCTION {

  BYTE  BlendOp;

  BYTE  BlendFlags;

  BYTE  SourceConstantAlpha;

  BYTE  AlphaFormat;

}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION; 

 

Members:

BlendOp: 指定源混合操作。目前,唯一的源和目标混合操作被定义为 AC_SRC_OVER。 详情,请参阅下面的备注部分。

BlendFlags: 必须为 0。

SourceConstantAlpha: 指定用于整张源位图的Alpha透明度值。 SourceConstantAlpha 值和每个像素的alpha值合并。如果 SourceConstantAlpha 为0,那么图像就为完全透明;如果 SourceConstantAlpha 为255,则图像为不透明。

AlphaFormat: 该成员控制源和目标位图被解释的方式。 下面显示了AlphaFormat值:

    AC_SRC_ALPHA      此标志位图时设置有一个Alpha通道(即每像素都有alpha值)。 由于此API使用预乘α,图中的红色,绿色和蓝色通道值必须预乘alpha通道值。 例如如果alpha通道值为x,那么在调用之前必,红色,绿色和蓝色通道须乘以x然后除以0xff。 

Remarks

   当AlphaFormat参数为AC_SRC_ALPHA,源位图必须是32色。 如果不是,AlphaBlend函数将失败。

   当BlendOp参数为AC_SRC_OVER,源位图将根据源像素的alpha值置于目标位图上。

   如果源位图没有设置AC_SRC_ALPHA,由在SourceConstantAlpha值确定源和目标位图混合,如下表所示。 注意 ,SourceConstantAlpha的值为SCA。 此外,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))

   如果目标位图有alpha通道,则混合如下。

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

   如果源位图不使用SourceConstantAlpha(即,它等于0xFF),每个像素的alpha值决定源和目标位图的混合,如下列公式所示。

Dst
.
Red
   = 
Src
.
Red   
+ (1 – 
Src
.
Alpha
) * 
Dst
.
Red 


Dst
.
Green
 = 
Src
.
Green
 + (1 – 
Src
.
Alpha
) * 
Dst
.
Green 


Dst.Blue  = Src.Blue  + (1 – Src.Alpha) * Dst.Blue 

   如果目标位图的alpha通道,则混合如下。
 Dst.alpha = Src.Alpha + (1 – Src.Alpha) * Dst.Alpha

   如果源位图既有SourceConstantAlpha(也就是说,它不是0xFF)和每像素都有alpha值,那么源位图先预乘以SourceConstantAlpha,然后根据每个像素的alpha值混合。如下列方程显示。 请注意,SourceConstantAlpha除以255是因为它的值范围从0到255。

Src
.
Red
   = 
Src
.
Red   

SourceConstantAlpha
 / 255.0; 


Src
.
Green
 = 
Src
.
Green
 * 
SourceConstantAlpha
 / 255.0; 


Src
.
Blue
  = 
Src
.
Blue  

SourceConstantAlpha
 / 255.0; 


Src
.
Alpha
 = 
Src
.
Alpha
 * 
SourceConstantAlpha
 / 255.0; 


Dst
.
Red
   = 
Src
.
Red   
+ (1 – 
Src
.
Alpha
) * 
Dst
.
Red 


Dst
.
Green
 = 
Src
.
Green
 + (1 – 
Src
.
Alpha
) * 
Dst
.
Green 


Dst
.
Blue
  = 
Src
.
Blue  
+ (1 – 
Src
.
Alpha
) * 
Dst
.
Blue 


Dst
.
Alpha
 = 
Src
.
Alpha
 + (1 – 
Src
.
Alpha
) * 
Dst
.
Alpha

今天的文章alphablending_alphaphi是什么意思分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/73995.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注