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 |
---|
![]() |
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 |
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.
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 |