Sdílet prostřednictvím


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.

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
obrázek před efektem.
Po
obrázek po transformaci.
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.

diagram růstu velikosti výstupu efektu stínu

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

ID2D1Effect