Freigeben über


BLENDFUNCTION-Struktur (wingdi.h)

Die BLENDFUNCTION-Struktur steuert das Mischen durch Angabe der Füllfunktionen für Quell- und Zielbitbits.

Syntax

typedef struct _BLENDFUNCTION {
  BYTE BlendOp;
  BYTE BlendFlags;
  BYTE SourceConstantAlpha;
  BYTE AlphaFormat;
} BLENDFUNCTION, *PBLENDFUNCTION;

Member

BlendOp

Der Quellmischungsvorgang. Derzeit ist der einzige definierte Quell- und Ziel-Mischvorgang AC_SRC_OVER. Ausführliche Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen.

BlendFlags

Muss Null sein.

SourceConstantAlpha

Gibt einen Alphatransparenzwert an, der für die gesamte Quell-Bitmap verwendet werden soll. Der SourceConstantAlpha-Wert wird mit beliebigen Alphawerten pro Pixel in der Quell-Bitmap kombiniert. Wenn Sie SourceConstantAlpha auf 0 festlegen, wird davon ausgegangen, dass Ihr Bild transparent ist. Legen Sie den SourceConstantAlpha-Wert auf 255 (undurchsichtig) fest, wenn Sie nur Alphawerte pro Pixel verwenden möchten.

AlphaFormat

Dieses Element steuert die Interpretation der Quell- und Ziel-Bitmaps. AlphaFormat weist den folgenden Wert auf.

Wert Bedeutung
AC_SRC_ALPHA Dieses Flag wird festgelegt, wenn die Bitmap über einen Alphakanal (also Alpha pro Pixel) verfügt. Beachten Sie, dass die APIs ein vormultipliziertes Alpha verwenden, was bedeutet, dass die roten, grünen und blauen Kanalwerte in der Bitmap mit dem Alphakanalwert vormultipliziert werden müssen. Wenn der Alphakanalwert beispielsweise x ist, müssen die roten, grünen und blauen Kanäle mit x multipliziert und vor dem Aufruf durch 0xff geteilt werden.

Hinweise

Wenn das AlphaFormat-Element AC_SRC_ALPHA ist, muss die Quell-Bitmap 32 bpp sein. Andernfalls schlägt die AlphaBlend-Funktion fehl.

Wenn das BlendOp-Element AC_SRC_OVER ist, wird die Quell-Bitmap basierend auf den Alphawerten der Quellpixel über die Zielbit platziert.

Wenn die Quell-Bitmap keinen Alphawert pro Pixel aufweist (d. h. AC_SRC_ALPHA nicht festgelegt ist), bestimmt der SourceConstantAlpha-Wert die Mischung der Quell- und Zielbitbits, wie in der folgenden Tabelle gezeigt. Beachten Sie, dass SCA hier für SourceConstantAlpha verwendet wird. Außerdem wird SCA durch 255 geteilt, da es einen Wert hat, der zwischen 0 und 255 liegt.

Dst.Red = Src.Red * (SCA/255.0) + Dst.Red * (1.0 - (SCA/255.0))
Dst.Grün = Src.Green * (SCA/255.0) + Dst.Grün * (1,0 - (SCA/255,0))
Dst.Blue = Src.Blue * (SCA/255.0) + Dst.Blue * (1.0 - (SCA/255.0))
 

Wenn die Ziel-Bitmap über einen Alphakanal verfügt, sieht die Mischung wie folgt aus.

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

Wenn die Quell-Bitmap sourceConstantAlpha nicht verwendet (d. h. sie entspricht 0xFF), bestimmt das Alpha pro Pixel die Mischung aus Quell- und Zielbitbit, wie in der folgenden Tabelle gezeigt.

Dst.Red = Src.Red + (1 - Src.Alpha) * Dst.Red
Dst.Grün = Src.Green + (1 - Src.Alpha) * Dst.Green
Dst.Blue = Src.Blue + (1 - Src.Alpha) * Dst.Blue
 

Wenn die Ziel-Bitmap über einen Alphakanal verfügt, sieht die Mischung wie folgt aus.

Dest.alpha = Src.Alpha + (1 - SrcAlpha) * Dst.Alpha
 

Wenn die Quelle sowohl über sourceConstantAlpha (d. h. nicht 0xFF) als auch über Alpha pro Pixel verfügt, wird die Quelle mit dem SourceConstantAlpha vorab multipliziert, und dann basiert die Mischung auf der Alpha pro Pixel. Die folgenden Tabellen zeigen dies. Beachten Sie, dass SourceConstantAlpha durch 255 geteilt wird, da es über einen Wert zwischen 0 und 255 verfügt.

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.Grün = 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

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile wingdi.h (einschließlich Windows.h)

Weitere Informationen

AlphaBlend

Bitmapstrukturen

Übersicht über Bitmaps