D2D1_ALPHA_MODE-Enumeration (dcommon.h)
Gibt an, wie der Alphawert einer Bitmap oder eines Renderziels behandelt werden soll.
Syntax
typedef enum D2D1_ALPHA_MODE {
D2D1_ALPHA_MODE_UNKNOWN = 0,
D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
D2D1_ALPHA_MODE_STRAIGHT = 2,
D2D1_ALPHA_MODE_IGNORE = 3,
D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;
Konstanten
D2D1_ALPHA_MODE_UNKNOWN Wert: 0 Der Alphawert ist möglicherweise nicht sinnvoll. |
D2D1_ALPHA_MODE_PREMULTIPLIED Wert: 1 Der Alphawert wurde vorab multipliziert. Jede Farbe wird zuerst durch den Alphawert skaliert. Der Alphawert selbst ist sowohl im geraden als auch im prämultiplizierten Alpha identisch. In der Regel ist kein Farbkanalwert größer als der Alphakanalwert. Wenn ein Farbkanalwert in einem vormultiplizierten Format größer als der Alphakanal ist, ergibt die standardmäßige Mathematische Überblendung von Quellen eine additive Mischung. |
D2D1_ALPHA_MODE_STRAIGHT Wert: 2 Der Alphawert wurde nicht vorab multipliziert. Der Alphakanal gibt die Transparenz der Farbe an. |
D2D1_ALPHA_MODE_IGNORE Wert: 3 Der Alphawert wird ignoriert. |
D2D1_ALPHA_MODE_FORCE_DWORD Wert: 0xffffffff |
Hinweise
Die D2D1_ALPHA_MODE-Enumeration wird zusammen mit der D2D1_PIXEL_FORMAT-Enumeration verwendet, um den Alphamodus eines Renderziels oder einer Bitmap anzugeben. Verschiedene Renderziele und Bitmaps unterstützen unterschiedliche Alphamodi. Eine Liste finden Sie unter Unterstützte Pixelformate und Alphamodi.
Die Unterschiede zwischen geradem und prämultipliziertem Alpha
Wenn Sie eine RGBA-Farbe mit geradem Alpha beschreiben, wird der Alphawert der Farbe im Alphakanal gespeichert. Um beispielsweise eine rote Farbe zu beschreiben, die 60 % undurchsichtig ist, würden Sie die folgenden Werte verwenden: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). Der Wert 255 gibt volles Rot an, und 153 (60 Prozent von 255) gibt an, dass die Farbe eine Deckkraft von 60 Prozent aufweisen sollte.Bei der Beschreibung einer RGBA-Farbe mit vormultipliziertem Alpha wird jede Farbe mit dem Alphawert multipliziert: (255 * 0,6, 0 * 0,6, 0 * 0,6, 255 * 0,6) = (153, 0, 0, 153).
Unabhängig vom Alphamodus des Renderziels werden D2D1_COLOR_F Werte immer als gerades Alpha interpretiert. Wenn Sie z. B. die Farbe eines ID2D1SolidColorBrush für die Verwendung mit einer Bitmap angeben, die den vormultiplizierten Alphamodus verwendet, geben Sie die Farbe genau so an, wie Sie würden, wenn die Bitmap gerades Alpha verwendet. Wenn Sie mit dem Pinsel malen, übersetzt Direct2D die Farbe für Sie in das Zielformat.
Alphamodus für Renderziele
Unabhängig von der Einstellung des Alphamodus unterstützen die Inhalte eines Renderziels Transparenz. Wenn Sie beispielsweise ein teilweise transparentes rotes Rechteck mit einem Renderziel mit einem Alphamodus von D2D1_ALPHA_MODE_IGNORE zeichnen, wird das Rechteck wie erwartet rosa (wenn der Hintergrund weiß ist).Wenn Sie ein teilweise transparentes rotes Rechteck zeichnen, wenn der Alphamodus die CreateCompatibleRenderTarget-Methode ist), um eine Bitmap zu erstellen, die Transparenz unterstützt.
ClearType- und Alphamodi
Wenn Sie einen anderen Alphamodus als D2D1_ALPHA_MODE_IGNORE für ein Renderziel angeben, wechselt der Text-Antialiasing-Modus automatisch von D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE in D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE. (Wenn Sie einen Alphamodus von D2D1_ALPHA_MODE_UNKNOWN angeben, legt Direct2D die Alpha für Sie fest, abhängig vom Typ des Renderziels. Eine Liste, in der die D2D1_ALPHA_MODE_UNKNOWN-Einstellung für jedes Renderziel aufgelöst wird, finden Sie in der Übersicht unterstützte Pixelformate und Alphamodi .)Sie können die SetTextAntialiasMode-Methode verwenden, um den Text-Antialiasmodus wieder in D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE zu ändern, aber das Rendern von ClearType-Text auf einer transparenten Oberfläche kann zu unvorhersehbaren Ergebnissen führen. Wenn Sie ClearType-Text in einem transparenten Renderziel rendern möchten, empfiehlt es sich, eine der beiden folgenden Techniken zu verwenden.
- Verwenden Sie die PushAxisAlignedClip-Methode , um das Renderziel in den Bereich zu schneiden, in dem der Text gerendert wird. Rufen Sie dann die Clear-Methode auf, geben Sie eine undurchsichtige Farbe an, und rendern Sie dann den Text.
- Verwenden Sie DrawRectangle , um ein undurchsichtiges Rechteck hinter dem Bereich zu zeichnen, in dem der Text gerendert wird.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Kopfzeile | dcommon.h (schließen Sie D2d1.h ein) |