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 für niedrigere Alphawerte transparenter. Sie können die Unschärfe und die Farbe des Schattens festlegen.

Die CLSID für diesen Effekt ist CLSID_D2D1Shadow.

Beispielbild

Das Beispiel hier zeigt die Ausgabe des Schatteneffekts, der nach unten und rechts übersetzt wurde, wobei das Quellbild an der ursprünglichen Position zusammengesetzt ist. Der Schatteneffekt gibt nur den Schatten aus.

Vorher
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
Der Unschärfewert, der 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 Standardabweichungseigenschaft Gaußian Blur .
Der Typ ist FLOAT.
Der Standardwert ist 3.0f.
Color
D2D1_SHADOW_PROP_COLOR
Die Farbe des Schlagschattens. Diese Eigenschaft ist ein D2D1_VECTOR_4F definiert wie folgt: (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}.
Optimization
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 Radien an. Verwendet lineare Filterung.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Verwendet die gleichen Optimierungsschwellenwerte wie der Geschwindigkeitsmodus, aber die trilineare Filterung.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Verwendet nur interne Optimierungen mit großen Weichzeichnerradien, bei denen Näherungen weniger wahrscheinlich sichtbar sind. Verwendet trilineare Filterung.

Ausgabebitbitbit

Die Größe der Ausgabebittebitbit entspricht der Größe der Weichzeichnerausgabe. Der Betrag, in dem die Ausgabebitgröße relativ zur ursprünglichen Bitmap mit der folgenden Gleichung berechnet werden kann:

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

Die Ausgabe wird in allen Richtungen gleich erhöht. Wenn die Größe beispielsweise in jeder Richtung um 10 Pixel zunimmt, befindet sich die obere linke Ecke der Bitmap bei (-5, -5) und die untere rechte Seite (105, 105), wie im folgenden Diagramm dargestellt.

Diagramm zur Größenvergrößerung des Schatteneffekts.

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