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 der einzelnen Renderzieltypen, id2D1Bitmapund ID2D1ImageSource. Der Abschnitt ist wie folgt gegliedert.

Unterstützte YUV-Formate für DXGI-Bildquelle

Eine ID2D1ImageSource ist ein abstrahiertes Anbieter von Pixeln. Sie kann entweder über WIC (CreateImageSourceFromWic oder idXGISurface (CreateImageSourceFromDxgi) instanziiert werden.

ID2D1ImageSourceFromWic unterstützt die gleichen Pixelformate und Alphamodi wie ID2D1Bitmap.

Darüber hinaus unterstützt eine ID2D1ImageSource, die über IDXGISurface instanziiert wird, auch einige YUV-Pixelformate, einschließlich planarer Daten, die in mehrere Oberflächen aufgeteilt sind. 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 dessen Pixelformat angeben. Um das Pixelformat anzugeben, verwenden Sie eine D2D1 _ PIXEL _ FORMAT-Struktur, um den pixelFormat-Member 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 verfügt über zwei Felder:

Im folgenden Beispiel wird eine D2D1 _ PIXEL _ FORMAT-Struktur erstellt und verwendet, um das Pixelformat und den Alphamodus einer ID2D1HwndRenderTargetanzugeben.

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
    );

Unterschiedliche Renderziele unterstützen unterschiedliche Format- und Alphamoduskombinationen. In den folgenden Abschnitten werden die von den einzelnen Renderzielen unterstützten Format- und Alphakombinationen aufgeführt.

Unterstützte Formate für ID2D1HwndRenderTarget

Die unterstützten Formate für ein ID2D1HwndRenderTarget hängen davon ab, ob es mithilfe von Hardware oder Software gerendert wird oder ob Direct2D den Renderingmodus standardmäßig automatisch verarbeitet.

Hinweis

Es wird empfohlen, DXGI _ FORMAT _ B8G8R8A8 _ UNORM als Pixelformat zu verwenden, um eine bessere Leistung zu erzielen. Dies ist besonders hilfreich für Softwarerenderziele. BGRA-Formatziele sind besser als RGBA-Formate.

Wenn Sie eine ID2D1HwndRenderTargeterstellen, 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, um zu bestimmen, ob das Renderziel Hardware- oder Softwarerendering verwendet, verwenden Sie die Einstellung D2D1 _ RENDER TARGET TYPE _ _ _ DEFAULT.

In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die mithilfe der Einstellung D2D1 _ RENDER TARGET TYPE _ _ _ DEFAULT 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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ IGNORE
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ UNKNOWN

Um zu erzwingen, dass ein Renderziel Hardwarerendering verwendet, verwenden Sie die Hardwareeinstellung D2D1 _ RENDER TARGET TYPE _ _ _ HARDWARE. In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die explizit 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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ IGNORE
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ UNKNOWN

Um zu erzwingen, dass ein Renderziel Softwarerendering verwendet, verwenden Sie die Einstellung D2D1 _ RENDER TARGET TYPE _ _ _ SOFTWARE. In der folgenden Tabelle sind die unterstützten Formate für ID2D1HwndRenderTarget-Objekte aufgeführt, die explizit 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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ IGNORE
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ UNKNOWN

Unabhängig davon, ob id2D1HwndRenderTarget hardwarebeschleunigt ist, verwendet das DXGI _ FORMAT _ UNKNOWN-Format standardmäßig DXGI _ FORMAT _ B8G8R8A8, und der D2D1 _ ALPHA MODE _ _ UNKNOWN Alpha-Modus verwendet standardmäßig D2D1 _ ALPHA MODE _ _ IGNORE.

Unterstützte Formate für ID2D1DeviceContext

Ab Windows 8 nutzt der Gerätekontext mehr direct3D-Formate mit hoher Farbe, z. B.:

  • _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 für eine ID2D1HwndRenderTargetfunktionieren.

Diese Formate werden zusätzlich zu den Formaten unterstützt, die von der ID2D1HwndRenderTarget-Schnittstelle in Windows 7 unterstützt werden. 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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ UNKNOWN

Das DXGI _ FORMAT _ UNKNOWN-Format verwendet standardmäßig das übergeordnete Renderzielformat, und im Modus D2D1 ALPHA MODE _ _ _ UNKNOWN alpha wird standardmäßig D2D1 _ ALPHA MODE _ _ PREMULTIPLIED verwendet.

Unterstützte Formate für DXGI Surface Render Target

Ein DXGI-Renderziel ist ein ID2D1RenderTarget, das von einer der ID2D1Factory::CreateDxgiSurfaceRenderTarget-Methoden erstellt wird. Sie unterstützt die folgenden Format- und Alphamoduskombinationen.

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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ IGNORE

Hinweis

Das Format muss mit dem Format der DXGI-Oberfläche übereinstimmen, auf die die DXGI-Oberfläche das Renderziel zeichnet.

Das DXGI _ FORMAT _ UNKNOWN-Format verwendet standardmäßig das DXGI-Oberflächenformat. Verwenden Sie nicht den Alphamodus D2D1 _ ALPHA MODE _ _ UNKNOWN mit einem DXGI-Oberflächenrenderziel. Er hat keinen Standardwert und führt dazu, dass die Erstellung des DXGI-Oberflächenrenderingziels fehlschlägt.

Unterstützte Formate für WIC-Bitmap-Renderziel

Ein WIC-Bitmaprenderziel ist ein ID2D1RenderTarget, das von einer der ID2D1Factory::CreateWicBitmapRenderTarget-Methoden erstellt wird. Sie unterstützt die folgenden Format- und Alphamoduskombinationen.

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 _ UNBEKANNT D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ IGNORE
_DXGI-FORMAT _ UNBEKANNT D2D1 _ ALPHA _ MODE _ UNKNOWN

Das Pixelformat des WIC-Bitmapziels muss mit dem Pixelformat der WIC-Bitmap übereinstimmen.

Das FORMAT DXGI _ FORMAT _ UNKNOWN verwendet standardmäßig das WIC-Bitmapformat, und der Alphamodus D2D1 _ ALPHA MODE _ _ UNKNOWN alpha verwendet standardmäßig den WIC-Bitmap-Alphamodus.

Unterstützte Formate für ID2D1DCRenderTarget

Ein ID2D1DCRenderTarget unterstützt die folgenden Format- und Alphamoduskombinationen.

Format Alphamodus
DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ ALPHA _ MODE _ IGNORE

Verwenden Sie nicht das FORMAT DXGI _ FORMAT _ UNKNOWN oder den Alphamodus D2D1 _ ALPHA MODE _ _ UNKNOWN mit einem ID2D1DCRenderTarget. Er 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-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ _ ALPHAMODUS _ UNBEKANNT
DXGI _ FORMAT _ A8 _ UNORM D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ A8 _ UNORM D2D1 _ _ ALPHA-MODUS _ GERADE
DXGI _ FORMAT _ A8 _ UNORM D2D1 _ _ ALPHAMODUS _ UNBEKANNT
DXGI _ FORMAT _ UNKNOWN D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ UNKNOWN D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ UNKNOWN D2D1 _ _ ALPHAMODUS _ UNBEKANNT
DXGI _ FORMAT _ B8G8R8X8 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ BC1 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ BC1 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ BC1 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHAMODUS _ UNBEKANNT
DXGI _ FORMAT _ BC2 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ BC2 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ BC2 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHAMODUS _ UNBEKANNT
DXGI _ FORMAT _ BC3 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED
DXGI _ FORMAT _ BC3 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
DXGI _ FORMAT _ BC3 _ UNORM (nur Windows 8.1 und höher) D2D1 _ _ ALPHAMODUS _ UNBEKANNT

Wenn Sie die ID2D1RenderTarget::CreateSharedBitmap-Methode verwenden, verwenden Sie das Feld pixelFormat einer D2D1 _ BITMAP _ PROPERTIES-Struktur, um das Pixelformat des neuen Renderziels anzugeben. Er muss mit dem Pixelformat der ID2D1Bitmap-Quelle übereinstimmen.

Wenn Sie die CreateBitmapFromWicBitmap-Methode verwenden, verwenden Sie das PixelFormat-Feld einer D2D1 _ BITMAP _ PROPERTIES-Struktur (anstelle des pixelsFormat-Members einer D2D1 _ RENDER TARGET _ _ PROPERTIES-Struktur), um das Pixelformat des neuen Renderziels anzugeben. Er muss mit dem Pixelformat der WIC-Bitmapquelle übereinstimmen.

Hinweis

Weitere Informationen zur Unterstützung von blockkomprimierten Pixelformaten (BCn) finden Sie unter Blockkomprimierung.

Unterstützte WIC-Formate

Wenn Sie die CreateBitmapFromWicBitmap-Methode verwenden, um eine Bitmap aus einer WIC-Bitmap zu erstellen, oder wenn Sie die CreateSharedBitmap-Methode mit einem IWICBitmapLockverwenden, muss die WIC-Quelle in einem von Direct2D unterstützten Format vorliegen.

WIC-Format Entsprechendes DXGI-Format Entsprechender Alphamodus
GUID _ WICPixelFormat8bppAlpha DXGI _ FORMAT _ A8 _ UNORM D2D1 _ ALPHA _ MODE _ STRAIGHT or D2D1 _ ALPHA _ MODE _ PREMULTIPLIED
GUID _ WICPixelFormat32bppPRGBA DXGI _ FORMAT _ R8G8B8A8 _ UNORM D2D1 _ ALPHA _ MODE _ PREMULTIPLIED or D2D1 _ ALPHA _ MODE _ IGNORE
GUID _ WICPixelFormat32bppBGR DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ _ ALPHA-MODUS _ IGNORIEREN
GUID _ WICPixelFormat32bppPBGRA DXGI _ FORMAT _ B8G8R8A8 _ UNORM D2D1 _ _ ALPHA-MODUS _ VORMULTIPLIED

Ein Beispiel, das zeigt, wie eine WIC-Bitmap in ein unterstütztes Format konvertiert wird, finden Sie unter Laden einer Bitmap aus einer Datei.

Verwenden eines nicht unterstützten Formats

Die Verwendung einer beliebigen Kombination anderer Pixelformate und Alphamodi, die in den früheren Tabellen aufgeführt sind, führt zu einem D2DERR _ UNSUPPORTED _ PIXEL _ FORMAT- oder E _ INVALIDARG-Fehler.

Informationen zu Alphamodi

Informationen zu prämultipliierten und geraden Alphamodi

Die Enumeration D2D1 _ ALPHA _ MODE gibt an, ob der Alphakanal prämultipliiertes Alpha, gerades Alpha oder ignoriert und als nicht transparent betrachtet werden soll. Bei geradem Alpha gibt der Alphakanal einen Wert an, der der Transparentsicht einer Farbe entspricht.

Farben werden von Direct2D-Zeichnungsbefehlen und Pinseln immer als gerades Alpha behandelt, unabhängig vom Zielformat.

Bei prämultipliierten Alphas wird jeder Farbkanal nach dem Alphawert skaliert. In der Regel ist kein Farbkanalwert größer als der Alphakanalwert. Wenn ein Farbkanalwert in einem vorab multiplizierten Format größer als der Alphakanal ist, erstellt die Standardmäßig-Source-Over-Mischungs-Mathematik eine additive Mischung.

Der Wert des Alphakanals selbst ist sowohl im geraden als auch im vor multiplizierten Alpha identisch.

Unterschiede zwischen geradem und prämultipliiertem Alpha

Bei der Beschreibung einer RGBA-Farbe mithilfe von geradem Alpha wird der Alphawert der Farbe im Alphakanal gespeichert. Um beispielsweise eine rote Farbe zu beschreiben, die zu 60 % deckend ist, verwenden Sie die folgenden Werte: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). Der Wert 255 steht für vollrot, und 153 (60 Prozent von 255) gibt an, dass die Farbe eine Deckkraft von 60 Prozent haben sollte.

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 für die Verwendung mit einem Renderziel angeben, das den prämultipliierten Alphamodus verwendet, geben Sie die Farbe genau so an, als ob das Renderziel gerades Alpha verwenden würde. Wenn Sie mit dem Pinsel zeichnen, übersetzt Direct2D die Farbe für Sie in das Zielformat.

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 dem Alphamodus D2D1 _ ALPHA _ MODE _ IGNOREzeichnen, wird das Rechteck rosa angezeigt (wenn der Hintergrund weiß ist).

Wenn Sie ein teilweise transparentes rotes Rechteck zeichnen, wenn der Alphamodus D2D1 _ ALPHA _ MODE _ PREMULTIPLIEDist, wird das Rechteck rosa angezeigt (vorausgesetzt, der Hintergrund ist weiß), und Sie können es bis zu dem hinter dem Renderziel sehen. Dies ist nützlich, wenn Sie id2D1DCRenderTarget verwenden, um in einem transparenten Fenster zu rendern, oder wenn Sie ein kompatibles Renderziel (ein Renderziel, das von der CreateCompatibleRenderTarget-Methode erstellt wurde) verwenden, 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, ändert sich der Text-Antialiasingmodus automatisch von D2D1 _ TEXT _ ANTIALIAS _ MODE CLEARTYPE in D2D1 _ TEXT _ ANTIALIAS _ MODE GRAYSCALE. (Wenn Sie den Alphamodus D2D1 _ ALPHA _ MODE _ UNKNOWN angeben, legt Direct2D das Alpha für Sie fest, abhängig von der Art des Renderziels.)

Sie können die SetTextAntialiasMode-Methode verwenden, um den Text antialias-Modus wieder in D2D1 _ TEXT _ ANTIALIAS _ MODE CLEARTYPEzu ä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 den Bereich zu beschneiden, in dem der Text gerendert wird. Rufen Sie dann die Clear-Methode auf, geben Sie eine nicht transparente Farbe an, und rendern Sie dann den Text.
  • Verwenden Sie DrawRectangle, um ein nicht transparentes Rechteck hinter dem Bereich zu zeichnen, in dem der Text gerendert wird.

D2D1-PIXELFORMAT _ _

D2D1 _ _ ALPHA-MODUS

_DXGI-FORMAT