Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema werden die Grundlagen eines kompatiblen A8-Renderziels sowie Beispiele für dessen Verwendung beschrieben.
Ein kompatibles A8-Renderziel ist ein kompatibles Renderziel (ID2D1BitmapRenderTarget), das ein A8-Pixelformat (DXGI_FORMAT_A8_UNORM) verwendet. Sie können ein kompatibles A8-Renderziel verwenden, um die Leistung der Anwendung zu verbessern und reibungslosere Übergänge während der Textanimation bereitzustellen. Ein kompatibles A8-Renderziel ist besonders nützlich, wenn Sie versuchen, Folgendes zu verbessern:
Die Bildfrequenz der Anwendung, die Text- oder Antialiasengeometrie rendert, die nur einfache Animationen enthält, z. B. Übersetzung, Drehung, Skalierung oder Farbänderungen.
Die visuelle Kontinuität der Anwendung, die Text während einer Animation vergrößert und verkleinert.
Verwenden Sie zum Erstellen eines kompatiblen A8-Renderziels die ID2D1RenderTarget::CreateCompatibleRenderTarget-Methode zusammen mit dem DXGI_FORMAT_A8_UNORM Pixelformat, und geben Sie ein zurückgegebenes kompatibles Renderziel an. Weitere Informationen zu Pixelformaten finden Sie unter Unterstützte Pixelformate und Alphamodi.
Verwenden Sie z. B. ein kompatibles A8-Renderziel, um den Text effizient zu animieren, der im folgenden Screenshot angezeigt wird, um den Text als Deckkraftmaske zwischenzuspeichern. Wenden Sie dann Transformationen auf die Deckkraftmaske an, um schnelle Rendering-Ergebnisse zu erzielen.

Der folgende Code zeigt, wie dies funktioniert. Es erstellt ein kompatibles A8-Renderziel, ruft die Bitmap daraus ab und rendert dann die Bitmap mithilfe von FillOpacityMask.
ID2D1BitmapRenderTarget *m_pOpacityRT;
// Create the compatible render target using desiredPixelSize to avoid
// blurriness issues caused by a fractional-pixel desiredSize.
D2D1_PIXEL_FORMAT alphaOnlyFormat = D2D1::PixelFormat(
DXGI_FORMAT_A8_UNORM,
D2D1_ALPHA_MODE_PREMULTIPLIED);
hr = m_pRT->CreateCompatibleRenderTarget(
NULL,
&maskPixelSize,
&alphaOnlyFormat,
D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE,
&m_pOpacityRT
);
D2D1_RECT_F destinationRect = D2D1::RectF(
roundedOffset.x,
roundedOffset.y,
roundedOffset.x + opacityRTSize.width,
roundedOffset.y + opacityRTSize.height
);
ID2D1Bitmap *pBitmap = NULL;
m_pOpacityRT->GetBitmap(&pBitmap);
pBitmap->GetDpi(&dpiX, &dpiY);
// The antialias mode must be set to D2D1_ANTIALIAS_MODE_ALIASED
// for this method to succeed. We've set this mode already though
// so no need to do it again.
m_pRT->FillOpacityMask(
pBitmap,
m_pBlackBrush,
D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL,
&destinationRect
);
pBitmap->Release();