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 |
---|
Nach |
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.
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 |