Members
BlendOp
Specifies the source blend operation. Currently, the only source and destination blend operation that has been defined is AC_SRC_OVER. For
details, see the following Remarks section.
BlendOp: 指定源混合操作。目前,唯一的源和目標混合操作被定義為 AC_SRC_OVER。 詳情,請參閱下面的備注部分。
BlendFlags
Must be zero.
BlendFlags: 必須為 0。
SourceConstantAlpha
Specifies an alpha transparency value to be used on the entire source bitmap. The SourceConstantAlpha value is combined with any per-pixel
alpha values in the source bitmap. If you set SourceConstantAlpha to 0, it is assumed that your image is transparent. When you only want to
use per-pixel alpha values, set the SourceConstantAlpha value to 255 (opaque) .
SourceConstantAlpha: 指定用于整張源位圖的Alpha透明度值。 SourceConstantAlpha 值和每個像素的alpha值合并。如果 SourceConstantAlpha 為0,那么圖
像就為完全透明;如果 SourceConstantAlpha 為255,則圖像為不透明。
AlphaFormat
This member controls the way the source and destination bitmaps are interpreted. The following table shows the value for AlphaFormat.
Value Description
AC_SRC_ALPHA This flag is set when the bitmap has an Alpha channel (that is, per-pixel alpha). Because this API uses premultiplied alpha, the
red, green and blue channel values in the bitmap must be premultiplied with the alpha channel value. For example, if the alpha channel value
is x, the red, green and blue channels must be multiplied by x and divided by 0xff before the call.
AlphaFormat: 該成員控制源和目標位圖被解釋的方式。 下面顯示了AlphaFormat值:
??? AC_SRC_ALPHA????? 此標志位圖時設置有一個Alpha通道(即每像素都有alpha值)。 由于此API使用預乘α,圖中的紅色,綠色和藍色通道值必須預乘alpha
通道值。 例如如果alpha通道值為x,那么在調用之前必,紅色,綠色和藍色通道須乘以x然后除以0xff。
Remarks
Remarks
When the AlphaFormat parameter is AC_SRC_ALPHA, the source bitmap must be 32 bpp. If it is not, the AlphaBlend function will fail.
當AlphaFormat參數為AC_SRC_ALPHA,源位圖必須是32色。 如果不是,AlphaBlend函數將失敗。
When the BlendOp parameter is AC_SRC_OVER , the source bitmap is placed over the destination bitmap based on the alpha values of the source
pixels.
當BlendOp參數為AC_SRC_OVER,源位圖將根據源像素的alpha值置于目標位圖上。
If the source bitmap has no per-pixel alpha value (that is, AC_SRC_ALPHA is not set), the SourceConstantAlpha value determines the blend of
the source and destination bitmaps, as shown in the following table. Note that SCA is used for SourceConstantAlpha here. Also, SCA is divided
by 255 because it has a value that ranges from 0 to 255.
如果源位圖沒有設置AC_SRC_ALPHA,由在SourceConstantAlpha值確定源和目標位圖混合,如下表所示。 注意 ,SourceConstantAlpha的值為SCA。 此外,SCA除
以255是因為它的值范圍為0至255.
CopyDst.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))
If the destination bitmap has an alpha channel, then the blend is as follows.
?如果目標位圖有alpha通道,則混合如下。
Dst.Alpha = Src.Alpha * (SCA/255.0) + Dst.Alpha * (1.0 - (SCA/255.0))
If the source bitmap does not use SourceConstantAlpha (that is, it equals 0xFF), the per-pixel alpha determines the blend of the source and
destination bitmaps, as shown by the following equations.
如果源位圖不使用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
If the destination bitmap has an alpha channel, then the blend is as follows.
如果目標位圖的alpha通道,則混合如下。
Dest.alpha = Src.Alpha + (1 - Src.Alpha) * Dst.Alpha
If the source has both the SourceConstantAlpha (that is, it is not 0xFF) and per-pixel alpha, the source is pre-multiplied by the
SourceConstantAlpha and then the blend is based on the per-pixel alpha. The following equations show this. Note that SourceConstantAlpha is
divided by 255 because it has a value that ranges from 0 to 255.
如果源位圖既有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
?