Unterstützte Pixelformate und Alpha-Modi
In diesem Thema werden die Pixelformate und Alphamodi beschrieben, die von den verschiedenen Teilen von Direct2D unterstützt werden, einschließlich jedes Renderzieltyps ID2D1Bitmap und ID2D1ImageSource. Es enthält die folgenden Abschnitte.
- Unterstützte YUV-Formate für DXGI-Bildquelle
- Angeben eines Pixelformats für ein Renderziel
- Unterstützte Formate für ID2D1HwndRenderTarget
- Unterstützte Formate für ID2D1DeviceContext
- Unterstützte Formate für kompatibles Renderziel
- Unterstützte Formate für DXGI Surface-Renderziel
- Unterstützte Formate für WIC-Bitmap-Renderziel
- Unterstützte Formate für ID2D1DCRenderTarget
- Angeben eines Pixelformats für eine ID2D1Bitmap
- Verwenden eines nicht unterstützten Formats
- Informationen zu Alphamodi
- Verwandte Themen
Unterstützte YUV-Formate für DXGI-Bildquelle
Eine ID2D1ImageSource ist ein abstrahierter Anbieter von Pixeln. Sie kann entweder über WIC (CreateImageSourceFromWic oder eine IDXGISurface (CreateImageSourceFromDxgi) instanziiert werden.
ID2D1ImageSourceFromWic unterstützt den gleichen Satz von Pixelformaten und Alphamodi wie ID2D1Bitmap.
Zusätzlich zur obigen Instanziierung unterstützt eine ID2D1ImageSource, die von IDXGISurface instanziiert wird, auch einige YUV-Pixelformate, einschließlich planarer Daten, die in mehrere Oberflächen aufgeteilt werden. Weitere Informationen zu den Anforderungen für jedes Pixelformat finden Sie unter CreateImageSourceFromDxgi.
Format |
---|
DXGI_FORMAT_AYUV |
DXGI_FORMAT_NV12 |
DXGI_FORMAT_YUY2 |
DXGI_FORMAT_P208 |
DXGI_FORMAT_V208 |
DXGI_FORMAT_V408 |
DXGI_FORMAT_R8_UNORM |
DXGI_FORMAT_R8G8_UNORM |
Angeben eines Pixelformats für ein Renderziel
Wenn Sie ein Renderziel erstellen, müssen Sie das Pixelformat angeben. Um das Pixelformat anzugeben, verwenden Sie eine D2D1_PIXEL_FORMAT-Struktur, um das pixelFormat-Mitglied einer D2D1_RENDER_TARGET_PROPERTIES-Struktur festzulegen. Anschließend übergeben Sie diese Struktur an die entsprechende Create-Methode, z. B. ID2D1Factory::CreateHwndRenderTarget.
Die D2D1_PIXEL_FORMAT-Struktur weist zwei Felder auf:
- format, ein DXGI_FORMAT-Wert, der die Größe und Anordnung von Kanälen in jedem Pixel beschreibt, und
- alpha, ein D2D1_ALPHA_MODE-Wert, der beschreibt, wie Alphainformationen interpretiert werden.
Im folgenden Beispiel wird eine D2D1_PIXEL_FORMAT-Struktur erstellt und verwendet, um das Pixelformat und den Alphamodus eines ID2D1HwndRenderTarget anzugeben.
RECT rc;
GetClientRect(m_hwnd, &rc);
D2D1_SIZE_U size = D2D1::SizeU(
rc.right - rc.left,
rc.bottom - rc.top
);
// Create a pixel format and initial its format
// and alphaMode fields.
D2D1_PIXEL_FORMAT pixelFormat = D2D1::PixelFormat(
DXGI_FORMAT_B8G8R8A8_UNORM,
D2D1_ALPHA_MODE_IGNORE
);
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties();
props.pixelFormat = pixelFormat;
// Create a Direct2D render target.
hr = m_pD2DFactory->CreateHwndRenderTarget(
props,
D2D1::HwndRenderTargetProperties(m_hwnd, size),
&m_pRT
);
Verschiedene Renderziele unterstützen unterschiedliche Kombinationen aus Format und Alphamodus. In den folgenden Abschnitten werden die von den einzelnen Renderzielen unterstützten Format- und Alpha-Kombinationen aufgeführt.
Unterstützte Formate für ID2D1HwndRenderTarget
Die unterstützten Formate für ein ID2D1HwndRenderTarget hängen davon ab, ob das Rendering mithilfe von Hardware oder Software erfolgt oder ob Direct2D den Renderingmodus standardmäßig automatisch handhabt.
Hinweis
Es wird empfohlen, DXGI_FORMAT_B8G8R8A8_UNORM als Pixelformat zu verwenden, um eine bessere Leistung zu erzielen. Dies ist besonders für Software-Renderziele hilfreich. BGRA-Formatziele sind besser als RGBA-Formate.
Wenn Sie ein ID2D1HwndRenderTarget erstellen, verwenden Sie die D2D1_RENDER_TARGET_PROPERTIES-Struktur, um Renderingoptionen anzugeben. Die Optionen enthalten das Pixelformat, wie im vorherigen Abschnitt erwähnt. Mit dem Typfeld dieser Struktur können Sie angeben, ob das Renderziel auf Hardware oder Software gerendert wird oder ob Direct2D den Renderingmodus automatisch bestimmen soll.
Um Direct2D zu aktivieren und so zu bestimmen, ob das Renderziel Hardware- oder Softwarerendering verwendet, nutzen Sie die D2D1_RENDER_TARGET_TYPE_DEFAULT-Einstellung.
In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die mithilfe der D2D1_RENDER_TARGET_TYPE_DEFAULT-Einstellung erstellt werden.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
Um zu erzwingen, dass ein Renderziel Hardwarerendering verwendet, nutzen Sie die D2D1_RENDER_TARGET_TYPE_HARDWARE-Einstellung. In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die explizit das Hardwarerendering verwenden.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
Um zu erzwingen, dass ein Renderziel Softwarerendering verwendet, nutzen Sie die D2D1_RENDER_TARGET_TYPE_SOFTWARE-Einstellung. In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die explizit das Softwarerendering verwenden.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
Unabhängig davon, ob das ID2D1HwndRenderTarget hardwarebeschleunigt ist, verwendet das DXGI_FORMAT_UNKNOWN-Format standardmäßig DXGI_FORMAT_B8G8R8A8 und der Alphamodus D2D1_ALPHA_MODE_UNKNOWN verwendet standardmäßig D2D1_ALPHA_MODE_IGNORE.
Unterstützte Formate für ID2D1DeviceContext
Ab Windows 8 nutzt der Gerätekontext weitere der Direct3D-Hochfarbformate wie:
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_R16G16B16A16_UNORM
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R32G32B32A32_FLOAT
Verwenden Sie die ID2D1DeviceContext::IsDxgiFormatSupported-Methode, um festzustellen, ob ein Format in einem bestimmten Gerätekontext funktioniert. Diese Formate können auch in einem ID2D1HwndRenderTarget funktionieren.
Diese Formate werden zusätzlich zu den von der ID2D1HwndRenderTarget-Schnittstelle in Windows 7 unterstützt. Weitere Informationen finden Sie unter Geräte und Gerätekontexte.
Unterstützte Formate für kompatibles Renderziel
Ein kompatibles Renderziel (ein ID2D1BitmapRenderTarget, das von einer der ID2D1RenderTarget::CreateCompatibleRenderTarget-Methoden erstellt wird), erbt die unterstützten Formate und Alphamodi des Renderziels, das es erstellt hat. Ein kompatibles Renderziel unterstützt auch die folgenden Format- und Alphamoduskombinationen, unabhängig davon, was das übergeordnete Element unterstützt.
Format | Alphamodus |
---|---|
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_STRAIGHT |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
Das DXGI_FORMAT_UNKNOWN-Format verwendet standardmäßig das übergeordnete Renderzielformat, und der D2D1_ALPHA_MODE_UNKNOWN-Alphamodus verwendet standardmäßig D2D1_ALPHA_MODE_PREMULTIPLIED.
Unterstützte Formate für DXGI Surface-Renderziel
Ein DXGI-Renderziel ist ein ID2D1RenderTarget, das von einer der ID2D1Factory::CreateDxgiSurfaceRenderTarget-Methoden erstellt wird. Es unterstützt die folgenden Kombinationen aus Format und Alphamodus.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_STRAIGHT |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
Hinweis
Das Format muss mit dem Format der DXGI-Oberfläche übereinstimmen, auf die das DXGI-Oberflächen-Renderziel zeichnet.
Das DXGI_FORMAT_UNKNOWN-Format verwendet standardmäßig das DXGI-Oberflächenformat. Verwenden Sie den D2D1_ALPHA_MODE_UNKNOWN-Alphamodus nicht mit einem DXGI-Oberflächen-Renderziel. Es hat keinen Standardwert und führt dazu, dass die Erstellung des DXGI-Oberflächen-Renderziels fehlschlägt.
Unterstützte Formate für WIC-Bitmap-Renderziel
Ein WIC-Bitmap-Renderziel ist ein ID2D1RenderTarget, das von einer der ID2D1Factory::CreateWicBitmapRenderTarget-Methoden erstellt wird. Es unterstützt die folgenden Kombinationen aus Format und Alphamodus.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_STRAIGHT |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
Das Pixelformat des WIC-Bitmapziels muss mit dem Pixelformat der WIC-Bitmap übereinstimmen.
Das DXGI_FORMAT_UNKNOWN-Format verwendet standardmäßig das WIC-Bitmapformat, und der D2D1_ALPHA_MODE_UNKNOWN-Alphamodus nutzt standardmäßig den WIC-Bitmap-Alphamodus.
Unterstützte Formate für ID2D1DCRenderTarget
Ein ID2D1DCRenderTarget unterstützt die folgenden Kombinationen aus Format und Alphamodus.
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
Verwenden Sie nicht das DXGI_FORMAT_UNKNOWN-Format oder den D2D1_ALPHA_MODE_UNKNOWN-Alphamodus mit einem ID2D1DCRenderTarget. Es hat keinen Standardwert und führt dazu, dass die ID2D1DCRenderTarget-Erstellung fehlschlägt.
Angeben eines Pixelformats für eine ID2D1Bitmap
Im Allgemeinen unterstützen ID2D1Bitmap-Objekte die folgenden Formate und Alphamodi (mit einigen Einschränkungen, die in den folgenden Absätzen beschrieben werden.)
Format | Alphamodus |
---|---|
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_STRAIGHT |
DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_UNKNOWN | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_B8G8R8X8_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_BC1_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_BC1_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_BC1_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_BC2_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_BC2_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_BC2_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_UNKNOWN |
DXGI_FORMAT_BC3_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_PREMULTIPLIED |
DXGI_FORMAT_BC3_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_IGNORE |
DXGI_FORMAT_BC3_UNORM (nur Windows 8.1 und höher) | D2D1_ALPHA_MODE_UNKNOWN |
Wenn Sie die ID2D1RenderTarget::CreateSharedBitmap-Methode verwenden, nutzen Sie das Feld pixelFormat einer D2D1_BITMAP_PROPERTIES-Struktur, um das Pixelformat des neuen Renderziels anzugeben. Sie muss mit dem Pixelformat der ID2D1Bitmap-Quelle übereinstimmen.
Wenn Sie die CreateBitmapFromWicBitmap-Methode verwenden, nutzen Sie das Feld pixelFormat einer D2D1_BITMAP_PROPERTIES-Struktur (anstelle des pixelFormat-Mitglieds einer D2D1_RENDER_TARGET_PROPERTIES-Struktur), um das Pixelformat des neuen Renderziels anzugeben. Sie muss mit dem Pixelformat der WIC-Bitmap-Quelle übereinstimmen.
Hinweis
Weitere Informationen zur Unterstützung von blockkomprimierten Pixelformaten (BCₙ) finden Sie unter Blockkomprimierung.
Unterstützte WIC-Formate
Wenn Sie die CreateBitmapFromWicBitmap-Methode zum Erstellen einer Bitmap aus einer WIC-Bitmap verwenden, oder wenn Sie die CreateSharedBitmap-Methode mit einer IWICBitmapLock nutzen, muss die WIC-Quelle in einem Format sein, das von Direct2D unterstützt wird.
WIC-Format | Entsprechendes DXGI-Format | Entsprechender Alphamodus |
---|---|---|
GUID_WICPixelFormat8bppAlpha | DXGI_FORMAT_A8_UNORM | D2D1_ALPHA_MODE_STRAIGHT oder D2D1_ALPHA_MODE_PREMULTIPLIED |
GUID_WICPixelFormat32bppPRGBA | DXGI_FORMAT_R8G8B8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED oder D2D1_ALPHA_MODE_IGNORE |
GUID_WICPixelFormat32bppBGR | DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_IGNORE |
GUID_WICPixelFormat32bppPBGRA | DXGI_FORMAT_B8G8R8A8_UNORM | D2D1_ALPHA_MODE_PREMULTIPLIED |
Ein Beispiel zum Konvertieren einer WIC-Bitmap in ein unterstütztes Format finden Sie unter Laden einer Bitmap aus einer Datei.
Verwenden eines nicht unterstützten Formats
Die Verwendung einer anderen Kombination als der Pixelformate und Alphamodi, die in den vorherigen Tabellen aufgeführt sind, führt zu einem D2DERR_UNSUPPORTED_PIXEL_FORMAT oder einem E_INVALIDARG-Fehler.
Informationen zu Alphamodi
Informationen zu prämultiplizierten und geraden Alphamodi
Die D2D1_ALPHA_MODE-Enumeration gibt an, ob der Alphakanal prämultipliziertes Alpha, gerades Alpha verwendet oder ignoriert und als nicht transparent betrachtet werden soll. Bei geradem Alpha gibt der Alphakanal einen Wert an, der der Transparenz einer Farbe entspricht.
Farben werden unabhängig vom Zielformat immer als gerades Alpha durch Direct2D-Zeichnungsbefehle und Pinsel behandelt.
Bei prämultiplizierten Alpha wird jeder Farbkanal durch den Alphawert skaliert. Normalerweise ist kein Farbkanalwert größer als der Alphakanalwert. Wenn ein Farbkanalwert in einem prämultiplizierten Format größer als der Alphakanal ist, erstellt die standardmäßige Source-Over-Blending-Mathematik eine additive Mischung.
Der Wert des Alphakanals selbst ist in geradem und prämultipliziertem Alpha identisch.
Die Unterschiede zwischen geradem und prämultiplizierten Alpha
Bei der Beschreibung einer RGBA-Farbe mit geradem Alpha wird der Alphawert der Farbe im Alphakanal gespeichert. Um beispielsweise eine rote Farbe zu beschreiben, die 60 % nicht transparent ist, verwenden Sie die folgenden Werte: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). Der Wert 255 gibt ein sattes Rot an und 153 (60 Prozent von 255) gibt an, dass die Farbe eine Deckkraft von 60 Prozent aufweisen soll.
Bei der Beschreibung einer RGBA-Farbe mithilfe von prämultipliziertem 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 beispielsweise die Farbe eines ID2D1SolidColorBrush zur Verwendung mit einem Renderziel angeben, das den prämultiplizierten Alphamodus verwendet, geben Sie die Farbe genauso an, als ob das Renderziel gerades Alpha verwenden würde. Wenn Sie mit dem Pinsel zeichnen, übersetzt Direct2D die Farbe in das Zielformat für Sie.
Alphamodus für Renderziele
Unabhängig von der Alphamoduseinstellung 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 rosa angezeigt (wenn der Hintergrund weiß ist).
Wenn Sie ein teilweise transparentes rotes Rechteck zeichnen, wenn der Alpha-Modus D2D1_ALPHA_MODE_PREMULTIPLIED ist, wird das Rechteck rosa angezeigt (vorausgesetzt, der Hintergrund ist weiß), und Sie können durch das Rechteck hindurch auf das sehen, was sich hinter dem Renderziel befindet. Dies ist nützlich, wenn Sie ein ID2D1DCRenderTarget verwenden, um in einem transparenten Fenster zu rendern oder wenn Sie ein kompatibles Renderziel (ein renderzielorientiertes Renderziel, das von der CreateCompatibleRenderTarget-Methode erstellt wurde) verwenden, um eine Bitmap zu erstellen, die Transparenz unterstützt.
ClearType- und Alpha-Modi
Wenn Sie einen anderen Alphamodus als D2D1_ALPHA_MODE_IGNORE für ein Renderziel angeben, ändert sich 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 abhängig von der Art des Renderziels den Alphawert für Sie fest.)
Sie können die SetTextAntialiasMode-Methode verwenden, um den Text-Antialias-Modus wieder in D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE zu ändern, das Rendern von ClearType-Text auf eine transparente Oberfläche kann jedoch zu unvorhersehbaren Ergebnissen führen. Wenn Sie ClearType-Text in einem transparenten Renderziel rendern möchten, empfiehlt es sich, eine der folgenden beiden Techniken zu verwenden.
- Verwenden Sie die PushAxisAlignedClip-Methode, um das Renderziel in dem Bereich zu schneiden, in dem der Text gerendert wird, und rufen Sie dann die Clear-Methode auf, und geben Sie eine undurchsichtige Farbe an, und rendern Sie dann Ihren Text.
- Verwenden Sie DrawRectangle, um ein undurchsichtiges Rechteck hinter dem Bereich zu zeichnen, in dem der Text gerendert wird.