Bitmap-Quelleffekt
Verwenden Sie den Bitmap-Quelleffekt, um ein ID2D1Image aus einer IWICBitmapSource zur Verwendung als Eingabe in einem Effektdiagramm zu generieren. Dieser Effekt führt die Skalierung und Rotation der CPU durch. Optional kann es auch eine Mipmap für den Systemspeicher generieren, was eine Leistungsoptimierung für die aktive Skalierung sehr großer Bilder mit verschiedenen reduzierten Auflösungen sein kann.
Hinweis
Der Bitmapquelleneffekt verwendet seine Eingabe als Eigenschaft, nicht als Bildeingabe. Sie müssen die SetValue-Methode und nicht die SetInput-Methode verwenden. In der WicBitmapSource-Eigenschaft geben Sie die Bildeingabedaten an.
Die CLSID für diesen Effekt ist CLSID_D2D1BitmapSource.
- Effekteigenschaften
- Interpolationsmodi
- Ausrichtung
- Alphamodi
- Anmerkungen
- Anforderungen
- Zugehörige Themen
Effekteigenschaften
Anzeigename und Indexaufzählung | Beschreibung |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
Die IWICBitmapSource , die die zu ladenden Bilddaten enthält. Der Typ ist IWICBitmapSource. Der Standardwert ist NULL. |
Skalieren D2D1_BITMAPSOURCE_PROP_SCALE |
Der Skalierungsbetrag in X- und Y-Richtung. Der Effekt multipliziert die Breite mit dem X-Wert und die Höhe mit dem Y-Wert. Diese Eigenschaft ist eine D2D1_VECTOR_2F definiert als: (X-Skalierung, Y-Skalierung). Die Skalierungsmengen sind FLOAT, einheitslos und müssen positiv oder 0 sein. Der Typ ist D2D1_VECTOR_2F. Der Standardwert ist {1.0f, 1.0f}. |
Interpolationmode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Der Zum Skalieren des Bilds verwendete Interpolationsmodus. Weitere Informationen finden Sie unter Interpolationsmodi . Wenn der Modus die mipmap deaktiviert, speichert BitmapSouce das Bild in der Auflösung zwischen, die durch die Eigenschaften Scale und EnableDPICorrection bestimmt wird. Der Typ ist D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Der Standardwert ist D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Wenn Sie dies auf TRUE festlegen, skaliert der Effekt das Eingabebild, um den von IWICBitmapSource gemeldeten DPI in den DPI des Gerätekontexts zu konvertieren. Der Effekt verwendet den Interpolationsmodus, den Sie mit der InterpolationMode-Eigenschaft festgelegt haben. Wenn Sie dies auf FALSE festlegen, verwendet der Effekt einen DPI von 96,0 für das Ausgabebild. Der Typ ist BOOL. Der Standardwert ist FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Der Alphamodus der Ausgabe. Dies kann entweder vormultipliziert oder gerade sein. Weitere Informationen finden Sie unter Alphamodi . Der Typ ist D2D1_BITMAPSOURCE_ALPHA_MODE. Der Standardwert ist D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Ausrichtung D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Ein Dreh- und/oder Drehvorgang, der für das Bild ausgeführt werden soll. Weitere Informationen finden Sie unter Orientierung . Der Typ ist D2D1_BITMAPSOURCE_ORIENTATION. Der Standardwert ist D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Interpolationsmodi
Der Effekt interpoliert mit diesem Modus, wenn ein Bild skaliert oder der DPI korrigiert wird. Die Interpolationsmodi, die dieser Effekt verwendet, werden von der CPU und nicht von der GPU berechnet.
Name | Beschreibung |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Beispiel für den nächsten einzelen Punkt und verwendet diesen. Generiert keine mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Verwendet ein Vierpunktbeispiel und eine lineare Interpolation. Generiert keine mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Verwendet einen Kubikkern mit 16 Beispielen für die Interpolation. Generiert keine mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Verwendet die WIC-Fantinterpolation, die mit der IWICBitmapScaler-Schnittstelle identisch ist. Generiert keine mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Generiert die Mipmap-Kette im Systemspeicher mithilfe der bilinearen Interpolation. Für jede mipmap wird der Effekt mithilfe der bilinearen Interpolation auf das nächste Vielfache von 0,5 skaliert und dann die verbleibende Menge mithilfe der linearen Interpolation skaliert. |
Ausrichtung
Die Orientation-Eigenschaft kann verwendet werden, um ein EXIF-Ausrichtungsflag anzuwenden, das in ein Bild eingebettet ist.
Name | Beschreibung |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Standard. Der Effekt ändert die Ausrichtung der Eingabe nicht. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Das Bild wird horizontal umgedreht. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Dreht das Bild im Uhrzeigersinn um 180 Grad. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Dreht das Bild im Uhrzeigersinn um 180 Grad und dreht es horizontal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Dreht das Bild im Uhrzeigersinn um 270 Grad und dreht es horizontal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Dreht das Bild im Uhrzeigersinn um 90 Grad. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Dreht das Bild im Uhrzeigersinn um 90 Grad und kippt es horizontal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Dreht das Bild im Uhrzeigersinn um 270 Grad. |
Dieser Codeausschnitt veranschaulicht, wie Sie exif-Ausrichtungswerte (definiert in propkey.h) in D2D1_BITMAPSOURCE_ORIENTATION-Werte konvertieren.
#include <propkey.h>
#include <d2d1effects.h>
D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
switch (PhotoOrientation)
{
case PHOTO_ORIENTATION_NORMAL:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
case PHOTO_ORIENTATION_FLIPHORIZONTAL:
return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE180:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
case PHOTO_ORIENTATION_FLIPVERTICAL:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_TRANSPOSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE270:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
case PHOTO_ORIENTATION_TRANSVERSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE90:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
default:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
}
}
Alphamodi
Name | Beschreibung |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | Die Effektausgabe verwendet prämultipliziertes Alpha. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | Die Effektausgabe verwendet ein gerades Alpha. |
Bemerkungen
Um die Leistung bei der gemeinsamen Verwendung von WIC und Direct2D zu optimieren, sollten Sie IWICFormatConverter verwenden, um basierend auf Ihrem App-Szenario und der nativen Genauigkeit des Bilds in ein geeignetes Pixelformat zu konvertieren.
In den meisten Fällen erfordert Die Direct2D-Pipeline ihrer App nur 8 Bits pro Kanal (bpc) an Genauigkeit, oder das Bild bietet nur eine Genauigkeit von 8 bpc, weshalb Sie in GUID_WICPixelFormat32bppPBGRA konvertieren sollten. Wenn Sie jedoch von der zusätzlichen Genauigkeit eines Bilds profitieren möchten (z. B. ein JPEG-XR oder TIFF, das mit einer Genauigkeit von mehr als 8 bpc gespeichert ist), sollten Sie ein RGBA-basiertes Pixelformat verwenden. Die folgende Tabelle enthält weitere Details.
Gewünschte Genauigkeit | Native Genauigkeit des Bilds | Empfohlenes Pixelformat |
---|---|---|
8 Bits pro Kanal | <= 8 Bits pro Kanal | GUID_WICPixelFormat32bppPBGRA |
So hoch wie möglich | <= 8 Bits pro Kanal | GUID_WICPixelFormat32bppPBGRA |
So hoch wie möglich | > 8 Bits pro Kanal | RGBA-Kanalreihenfolge, prämultipliziertes Alpha |
Da viele Bildformate mehrere Genauigkeitsstufen unterstützen, sollten Sie IWICBitmapSource::GetPixelFormat verwenden, um das native Pixelformat des Bilds abzurufen, und dann IWICPixelFormatInfo verwenden, um zu bestimmen, wie viele Bits pro Kanal an Genauigkeit für dieses Format verfügbar sind. Beachten Sie außerdem, dass nicht alle Hardware Pixelformate mit hoher Genauigkeit unterstützt. In diesen Fällen muss Ihre App möglicherweise auf das WARP-Gerät zurückgreifen, um eine hohe Genauigkeit zu unterstützen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Unterstützte Mindestversion (Server) | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Header | d2d1effects.h |
Bibliothek | d2d1.lib, dxguid.lib |