Freigeben über


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

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
das Bild vor dem Effekt.
Nach
das Bild nach der Transformation.
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

ID2D1Effect