Efekt stínu
Pomocí stínového efektu vygenerujte stín z alfa kanálu obrázku. Stín je pro vyšší alfa hodnoty neprůhlednější a průhlednější pro nižší alfa hodnoty. Můžete nastavit rozostření a barvu stínu.
- příklad obrázku
- vlastnosti efektu
- režimy optimalizace
- výstupní rastrový obrázek
- požadavky na
- související témata
CLSID pro tento efekt je CLSID_D2D1Shadow.
Příklad obrázku
Příklad zde ukazuje výstup efektu stínu přeloženého dolů a vpravo se zdrojovým obrázkem složeným nad ním v původním umístění. Stínový efekt vypíše pouze stín.
Před |
---|
![]() |
Po |
![]() |
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();
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Popis |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Velikost rozostření, která se má použít na alfa kanál obrázku. Poloměr rozostření jádra můžete vypočítat vynásobením směrodatné odchylky číslem 3. Jednotky směrodatné odchylky a rozostření poloměru jsou DIP. Tato vlastnost je stejná jako Gaussian Blur směrodatná odchylka vlastnost. Typ je FLOAT. Výchozí hodnota je 3,0f. |
Barva D2D1_SHADOW_PROP_COLOR |
Barva stínu. Tato vlastnost je D2D1_VECTOR_4F definována jako: (R, G, B, A). Tuto barvu musíte zadat v rovné alfa. Typ je D2D1_VECTOR_4F. Výchozí hodnota je {0.0f, 0.0f, 0.0f, 1.0f}. |
Optimalizace D2D1_SHADOW_PROP_OPTIMIZATION |
Úroveň optimalizace výkonu. Typ je D2D1_SHADOW_OPTIMIZATION. Výchozí hodnota je D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Režimy optimalizace
Jméno | Popis |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Používá interní optimalizace, jako je například předběžné škálování v relativně malém radii. Používá lineární filtrování. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Používá stejné prahové hodnoty optimalizace jako režim rychlosti, ale používá trilineární filtrování. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Používá pouze interní optimalizace s velkým rozostřením radii, kde jsou aproximace méně pravděpodobné, že budou viditelné. Používá trilineární filtrování. |
Výstupní rastrový obrázek
Velikost výstupního rastrového obrázku je velikost rozostření výstupu. Velikost růstu výstupního rastrového obrázku vzhledem k původnímu rastru lze vypočítat pomocí následující rovnice:
Růst výstupního rastrového obrázku (X a Y) = RozostřeníStandardDeviation (pixely nezávislé na zařízení)*6*(DPI uživatele)/96
Výstup se zvyšuje rovnoměrně ve všech směrech, takže pokud se velikost v každém směru zvětší o 10 pixelů, nachází se levý horní roh rastrového obrázku (-5, -5) a vpravo dole bude na (105, 105), jak je znázorněno zde v diagramu.
Požadavky
Požadavek | Hodnota |
---|---|
Minimální podporovaný klient | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Minimální podporovaný server | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Záhlaví | d2d1effects.h |
Knihovna | d2d1.lib, dxguid.lib |