Freigeben über


Schatteneffekt

Verwenden Sie den Schatteneffekt, um einen Schatten aus dem Alphakanal eines Bilds zu generieren. Der Schatten ist für höhere Alphawerte undurchsichtiger und transparenter für niedrigere Alphawerte. Sie können die Weichzeichnermenge und die Farbe des Schattens festlegen.

Die CLSID für diesen Effekt ist CLSID_D2D1Shadow.

Beispielbild

Das folgende Beispiel zeigt die Ausgabe des Schatteneffekts, der unten und rechts mit dem Quellbild, das an der ursprünglichen Position darüber zusammengesetzt ist, übersetzt wurde. Der Schatteneffekt gibt nur den Schatten aus.

Vor
das Bild vor dem Effekt.
Nach
das Bild nach der Transformation.
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);

shadowEffect->SetInput(0, bitmap);

// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);

floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));

ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInputEffect(0, shadowEffect.Get());

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();

Effekteigenschaften

Anzeigename und Indexenumeration Beschreibung
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
Die Menge der Weichzeichner, die auf den Alphakanal des Bilds angewendet werden soll. Sie können den Weichzeichnerradius des Kernels berechnen, indem Sie die Standardabweichung mit 3 multiplizieren. Die Einheiten der Standardabweichung und des Weichzeichnerradius sind DIPs.
Diese Eigenschaft ist identisch mit der Gaussian Blur Standardabweichungseigenschaft.
Der Typ ist FLOAT.
Der Standardwert ist 3,0f.
Farbe
D2D1_SHADOW_PROP_COLOR
Die Farbe des Schlagschatten. Diese Eigenschaft ist ein D2D1_VECTOR_4F definiert als: (R, G, B, A). Sie müssen diese Farbe in geradem Alpha angeben.
Der Typ ist D2D1_VECTOR_4F.
Der Standardwert ist {0,0f, 0,0f, 0,0f, 1,0f}.
Optimierung
D2D1_SHADOW_PROP_OPTIMIZATION
Der Grad der Leistungsoptimierung.
Der Typ ist D2D1_SHADOW_OPTIMIZATION.
Der Standardwert ist D2D1_SHADOW_OPTIMIZATION_BALANCED.

Optimierungsmodi

Name Beschreibung
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Wendet interne Optimierungen wie z. B. die Vorskalierung bei relativ kleinen Bogenmaßen an. Verwendet lineare Filterung.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Verwendet dieselben Optimierungsschwellenwerte wie der Geschwindigkeitsmodus, verwendet aber die trilineare Filterung.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Verwendet nur interne Optimierungen mit großen Weichzeichnerradien, bei denen Annäherungen weniger wahrscheinlich sichtbar sind. Verwendet die Trilinearfilterung.

Ausgabebitmap

Die Größe der Ausgabebitmap ist die Größe der Weichzeichnerausgabe. Der Betrag, den das Ausgabebitmapwachstum relativ zur ursprünglichen Bitmap mit der folgenden Formel berechnet werden kann:

Output Bitmap Growth (X und Y) = BlurStandardDeviation (geräteunabhängige Pixel (DIPs)*6*(Benutzer-DPI)/96

Die Ausgabe nimmt gleichmäßig in alle Richtungen zu. Wenn die Größe also um 10 Pixel in jeder Richtung zunimmt, befindet sich die obere linke Ecke der Bitmap in (-5, -5) und die untere rechte Ecke (105, 105), wie im Diagramm hier dargestellt.

Größenwachstumsdiagramm für Schatteneffekte.

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-