Bitmapquelleffekt
Verwenden Sie den Bitmapquelleffekt, um ein ID2D1Image- aus einem IWICBitmapSource- für die Verwendung als Eingabe in einem Effektdiagramm zu generieren. Dieser Effekt führt skalierungs- und drehung auf der CPU aus. Es kann auch optional eine Systemspeichermipmap generieren, die eine Leistungsoptimierung für die aktive Skalierung sehr großer Bilder bei verschiedenen reduzierten Auflösungen sein kann.
Anmerkung
Der Bitmapquelleffekt verwendet seine Eingabe als Eigenschaft, nicht als Bildeingabe. Sie müssen die SetValue--Methode und nicht die SetInput--Methode verwenden. Die WicBitmapSource--Eigenschaft ist der Ort, an dem Sie die Bildeingabedaten angeben.
Die CLSID für diesen Effekt ist CLSID_D2D1BitmapSource.
- Effekteigenschaften
- Interpolationsmodi
- Ausrichtung
- Alphamodi
- Anmerkungen
- Anforderungen
- Verwandte Themen
Effekteigenschaften
Anzeigename und Indexenumeration | Beschreibung |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
Die IWICBitmapSource, die die zu ladenden Bilddaten enthalten. Der Typ ist IWICBitmapSource. Der Standardwert ist NULL. |
Maßstab D2D1_BITMAPSOURCE_PROP_SCALE |
Die Skalierungsmenge in der X- und Y-Richtung. Der Effekt multipliziert die Breite mit dem X-Wert und der Höhe mit dem Y-Wert. Diese Eigenschaft ist eine D2D1_VECTOR_2F definiert als: (X-Skalierung, Y-Skalierung). Die Skalierungsbeträge 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 Interpolationsmodus, der zum Skalieren des Bilds verwendet wird. Weitere Informationen finden Sie unter Interpolationsmodi. Wenn der Modus die Mipmap deaktiviert, speichert BitmapSouce das Bild bei 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-Wert in den DPI-Wert 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 für das Ausgabebild einen DPI-Wert von 96,0. Der Typ ist BOOL. Der Standardwert ist FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Der Alphamodus der Ausgabe. Dies kann entweder prämultipliziert oder gerade sein. Weitere Informationen finden Sie unter Alphamodi. Der Typ ist D2D1_BITMAPSOURCE_ALPHA_MODE. Der Standardwert ist D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Orientierung D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Ein Kipp- und/oder Drehvorgang, der auf dem Bild ausgeführt werden soll. Weitere Informationen finden Sie unter Orientation. Der Typ ist D2D1_BITMAPSOURCE_ORIENTATION. Der Standardwert ist D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Interpolationsmodi
Der Effekt interpoliert mithilfe dieses Modus, wenn es ein Bild skaliert oder den DPI-Wert korrigiert. Die Interpolationsmodi, die dieser Effekt verwendet, werden von der CPU und nicht von der GPU berechnet.
Name | Beschreibung |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Gibt den nächstgelegenen einzelnen Punkt an und verwendet dies. Generiert keine Mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Verwendet ein Beispiel mit vier Punkten und eine lineare Interpolation. Generiert keine Mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Verwendet einen 16 Beispiel-Kubikkern für die Interpolation. Generiert keine Mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Verwendet die WIC-Fantinterpolation, identisch mit der IWICBitmapScaler--Schnittstelle. Generiert keine Mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Generiert mipmap-Kette im Systemspeicher mit bilinearer Interpolation. Für jede Mipmap skaliert der Effekt mit bilinearer Interpolation auf das nächste Vielfache von 0,5 und skaliert dann den verbleibenden Betrag mithilfe der linearen Interpolation. |
Orientierung
Die Orientation-Eigenschaft kann verwendet werden, um ein EXIF-Ausrichtungsflagge anzuwenden, das in ein Bild eingebettet ist.
Name | Beschreibung |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Vorgabe. Der Effekt ändert nicht die Ausrichtung der Eingabe. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Kippt das Bild horizontal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Dreht das Bild im Uhrzeigersinn um 180 Grad. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Dreht das Bild um 180 Grad im Uhrzeigersinn und kippt es horizontal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Dreht das Bild um 270 Grad im Uhrzeigersinn und kippt 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 aus EXIF-Ausrichtungswerten (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 gerade Alpha. |
Bemerkungen
Um die Leistung bei der Gemeinsamen Verwendung von WIC und Direct2D- zu optimieren, sollten Sie IWICFormatConverter- verwenden, um auf grundlage ihres App-Szenarios und der nativen Genauigkeit des Bilds in ein geeignetes Pixelformat zu konvertieren.
In den meisten Fällen ist entweder die Direct2D- Pipeline Ihrer App nur 8 Bit pro Kanal (bpc) genauigkeit erforderlich, oder das Bild bietet nur 8 bpc-Genauigkeit, und daher sollten Sie in GUID_WICPixelFormat32bppPBGRA konvertieren. Wenn Sie jedoch eine zusätzliche Genauigkeit nutzen möchten, die von einem Bild bereitgestellt wird (z. B. ein JPEG-XR oder TIFF mit einer Genauigkeit von mehr als 8 bpc), sollten Sie ein RGBA-basiertes Pixelformat verwenden. Die folgende Tabelle enthält weitere Details.
Gewünschte Genauigkeit | Native Genauigkeit des Bilds | Empfohlenes Pixelformat |
---|---|---|
8 Bit pro Kanal | <= 8 Bit pro Kanal | GUID_WICPixelFormat32bppPBGRA |
So hoch wie möglich | <= 8 Bit pro Kanal | GUID_WICPixelFormat32bppPBGRA |
So hoch wie möglich | > 8 Bit pro Kanal | RGBA-Kanalreihenfolge, prämultipliziertes Alpha |
Da viele Bildformate mehrere Genauigkeitsebenen unterstützen, sollten Sie IWICBitmapSource::GetPixelFormat- verwenden, um das systemeigene Pixelformat des Bilds abzurufen, und verwenden Sie dann IWICPixelFormatInfo-, um zu bestimmen, wie viele Bits pro Genauigkeitskanal 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 hohe Präzision zu unterstützen.
Anforderungen
Anforderung | Wert |
---|---|
Mindestens unterstützter Client | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Mindestens unterstützter Server | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Kopfball | d2d1effects.h |
Bibliothek | d2d1.lib, dxguid.lib |