Freigeben über


Skaleneffekt

Verwenden Sie diesen Effekt, um ein Bild nach oben oder unten zu skalieren. Der Effekt hat sechs Skalierungsmodi: nächster Nachbar, linear, kubisch, mehrproben linear, anisotropisch und qualitativ hochwertige Kubik.

Die CLSID für diesen Effekt ist CLSID_D2D1Scale.

Beispielbild

This example shows the scale effect zooming in 2 times the input and cropping to the original size.

Vor
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
Maßstab
D2D1_SCALE_PROP_SCALE
Die Skalierungsmenge in der X- und Y-Richtung als Verhältnis der Ausgabegröße zur Eingabegröße. Diese Eigenschaft D2D1_VECTOR_2Fdefined 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}.
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 Mittelpunktseigenschaft, 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 zum Berechnen des Rahmens des Bilds verwendet wird, 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 wird die Schärfe des Skalierungsfilters als Gleitkomma zwischen 0 und 1 festgelegt. Die Werte sind ohne Einheit. Sie können die Schärfe verwenden, um die Qualität eines Bilds anzupassen, wenn Sie das Bild nach unten skalieren.
Der Schärfefaktor wirkt sich auf die Form des Kernels 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 Die Effektpads des Eingabebilds mit transparenten schwarzen Pixeln für Beispiele außerhalb der Eingabegrenzen, wenn sie den Konvolutionskern anwendet. 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 mit einer Spiegelrahmentransformation für Beispiele außerhalb der Eingabegrenzen. Die Größe der Ausgabebitmap entspricht der Größe der Eingabebitmap.

`

Interpolationsmodi

Aufzählung Beschreibung
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR Gibt den nächstgelegenen einzelnen Punkt an und verwendet dies. Dieser Modus verwendet weniger Verarbeitungszeit, gibt jedoch das bild mit der niedrigsten Qualität aus.
D2D1_SCALE_INTERPOLATION_MODE_LINEAR Verwendet ein Beispiel mit vier Punkten 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 16 Beispiel-Kubikkern 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 vier lineare Beispiele innerhalb eines einzelnen Pixels für eine gute Antialiasierung am Rand. Dieser Modus eignet sich gut für die Skalierung von kleinen Mengen an Bildern mit wenigen Pixeln.
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC Verwendet die anisotrope Filterung, um ein Muster gemäß der transformierten Form der Bitmap zu probieren.
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Verwendet einen kubischen Kernel mit variabler Größe mit hoher Qualität, um ein Bild vorab zu verkleinern, wenn die Downscaling an der Transformationsmatrix beteiligt ist. Verwendet dann den kubischen Interpolationsmodus für die endgültige Ausgabe.

Anmerkung

Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1_SCALE_INTERPOLATION_MODE_LINEAR festgelegt.

Anmerkung

Der anisotrope Modus generiert jedoch Mipmaps beim Skalieren, wenn Sie die Zwischengespeicherte-Eigenschaft auf "true" für die Effekte festlegen, die für diesen Effekt eingegeben werden, werden die Mipmaps nicht jedes Mal für ausreichend kleine Bilder generiert.

Ausgabebitmap

Die Position und Größe der Ausgabebitmap hängt vom angegebenen Skalierungsfaktor und dem Mittelpunkt ab.

Mit dieser Formel können Sie die Größe der Ausgabebitmap berechnen:

BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)

Der Effekt rundet Bruchzahlen von Pixeln auf das nächste ganze Pixel auf.

Die Position der Bitmap ist (0, 0) oder der Wert der Mittelpunkteigenschaft.

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

ID2D1Effect-