Skalierungseffekt
Verwenden Sie diesen Effekt, um ein Bild nach oben oder unten zu skalieren. Der Effekt hat sechs Skalierungsmodi: nächster Nachbar, Linear, Kubik, Linear mit mehreren Stichproben linear, anisotrop und qualitativ hochwertigen Kubik.
Die CLSID für diesen Effekt ist CLSID_D2D1Scale.
- Beispielbild
- Effekteigenschaften
- Interpolationsmodi
- Ausgabebitbitbit
- Anforderungen
- Zugehörige Themen
Beispielbild
In diesem Beispiel wird gezeigt, wie der Skalierungseffekt die Eingabe um das Zweifache vergrößert und auf die ursprüngliche Größe zugeschnitten wird.
Vorher |
---|
Nach |
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);
scaleEffect->SetInput(0, bitmap);
scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();
Effekteigenschaften
Anzeigename und Indexenumeration | BESCHREIBUNG |
---|---|
Skalieren D2D1_SCALE_PROP_SCALE |
Der Skalierungsbetrag in X- und Y-Richtung als Verhältnis der Ausgabegröße zur Eingabegröße. Diese Eigenschaft D2D1_VECTOR_2Fdefined wie folgt aus: (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}. |
CenterPoint D2D1_SCALE_PROP_CENTER_POINT |
Der Mittelpunkt der Bildskalierung. Diese Eigenschaft ist ein D2D1_VECTOR_2F definiert als: (Punkt X, Punkt Y). Die Einheiten befinden sich in DIPs. Verwenden Sie die Mittelpunkteigenschaft, um einen anderen Punkt als die obere linke Ecke zu skalieren. Der Typ ist D2D1_VECTOR_2F. Der Standardwert ist {0.0f, 0.0f}. |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
Der Modus, der verwendet wird, um den Rahmen des Bilds zu berechnen, weich oder hart. Weitere Informationen finden Sie unter Rahmenmodi . Der Typ ist D2D1_BORDER_MODE. Der Standardwert ist D2D1_BORDER_MODE_SOFT. |
Schärfe D2D1_SCALE_PROP_SHARPNESS |
Im qualitativ hochwertigen kubischen Interpolationsmodus liegt die Schärfe des Skalierungsfilters als Float zwischen 0 und 1. Die Werte sind einheitslos. Sie können die Schärfe verwenden, um die Qualität eines Bilds anzupassen, wenn Sie das Bild herunterskalieren. Der Schärfefaktor wirkt sich auf die Form des Kerns aus. Je höher der Schärfefaktor, desto kleiner der Kernel. Hinweis: Diese Eigenschaft wirkt sich nur auf den qualitativ hochwertigen kubischen Interpolationsmodus aus. Der Typ ist FLOAT. Der Standardwert ist 0,0f. |
Interpolationmode D2D1_SCALE_PROP_INTERPOLATION_MODE |
Der Interpolationsmodus, den der Effekt zum Skalieren des Bilds verwendet. Es gibt 6 Skalierungsmodi, die in Qualität und Geschwindigkeit reichen. Weitere Informationen finden Sie unter Interpolationsmodi . Der Typ ist D2D1_SCALE_INTERPOLATION_MODE. Der Standardwert ist D2D1_SCALE_INTERPOLATION_MODE_LINEAR. |
Rahmenmodi
Name | BESCHREIBUNG |
---|---|
D2D1_BORDER_MODE_SOFT | Der Effekt füllt das Eingabebild mit transparenten schwarzen Pixeln für Stichproben außerhalb der Eingabegrenzen, wenn der Faltungskern angewendet wird. Dadurch wird eine weiche Kante für das Bild erstellt, und im Prozess wird die Ausgabebitmap um die Größe des Kernels erweitert. |
D2D1_BORDER_MODE_HARD | Der Effekt erweitert das Eingabebild um eine Spiegel Rahmentransformation für Stichproben außerhalb der Eingabegrenzen. Die Größe der Ausgabebitmap entspricht der Größe der Eingabebitbitbit. |
`
Interpolationsmodi
Enumeration | Beschreibung |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Beispiele für den nächsten einzelnen Punkt und verwenden diesen. Dieser Modus verwendet weniger Verarbeitungszeit, gibt jedoch das Bild mit der niedrigsten Qualität aus. |
D2D1_SCALE_INTERPOLATION_MODE_LINEAR | Verwendet ein Vier-Punkt-Beispiel und eine lineare Interpolation. Dieser Modus verwendet mehr Verarbeitungszeit als der nächste Nachbarmodus, gibt jedoch ein Bild mit höherer Qualität aus. |
D2D1_SCALE_INTERPOLATION_MODE_CUBIC | Verwendet einen Kubikkern mit 16 Beispielen für die Interpolation. Dieser Modus verwendet die meiste Verarbeitungszeit, gibt jedoch ein Bild mit höherer Qualität aus. |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Verwendet 4 lineare Beispiele innerhalb eines einzelnen Pixels für gutes Antialiasing von Kanten. Dieser Modus eignet sich gut für das Herunterskalieren von kleinen Mengen auf Bildern mit wenigen Pixeln. |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Verwendet die anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap zu ermitteln. |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Verwendet einen Kubikkern mit variabler Größe hoher Qualität, um eine Vorabskalierung des Bilds durchzuführen, wenn eine Downskalierung in die Transformationsmatrix einbezogen wird. Verwendet dann den kubischen Interpolationsmodus für die endgültige Ausgabe. |
Hinweis
Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1_SCALE_INTERPOLATION_MODE_LINEAR.
Hinweis
Der anisotrope Modus generiert bei der Skalierung Mipmaps. Wenn Sie jedoch die Cached-Eigenschaft für die effekte festlegen, die zu diesem Effekt eingegeben werden, werden die Mipmaps nicht jedes Mal für ausreichend kleine Bilder generiert.
Ausgabebitbitbit
Die Position und Größe der Ausgabebitbitte hängt vom angegebenen Skalierungsfaktor und dem Mittelpunkt ab.
Sie können die Größe der Ausgabebitbitbit mit dieser Gleichung berechnen:
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)
Der Effekt rundet Bruchteile von Pixeln auf das nächste ganze Pixel.
Die Position der Bitmap ist (0, 0) oder der Wert der Mittelpunkteigenschaft.
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 |