Árnyékeffektus

Az árnyékeffektussal árnyékot hozhat létre egy kép alfa csatornájából. Az árnyék átlátszatlanabb a magasabb alfaértékek esetében, és áttetszőbb az alacsonyabb alfaértékek esetében. Beállíthatja az elmosódás mértékét és az árnyék színét.

Az effektus CLSID azonosítója CLSID_D2D1Shadow.

Példakép

Az alábbi példa az árnyékeffektus kimenetét mutatja le és jobbra, az eredeti helyen összetett forrásképpel. Az árnyékeffektus csak az árnyékot adja ki.

Előtt
a képet az effektus előtt.
Után
a képet az átalakítás után.
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();

Effektus tulajdonságai

Név és index számbavételének megjelenítése Leírás
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
A kép alfa csatornájára alkalmazott elmosódás mennyisége. A kernel elmosódási sugarát úgy számíthatja ki, hogy megszorozza a szórást 3-mal. A szórás és az életlenítési sugár mértékegysége a DIP.
Ez a tulajdonság megegyezik a Gauss-elmosás szórás tulajdonságával.
A típus FLOAT.
Az alapértelmezett érték 3,0f.
Szín
D2D1_SHADOW_PROP_COLOR
A vetett árnyék színe. Ez a tulajdonság a következőként definiált D2D1_VECTOR_4F: (R, G, B, A). Ezt a színt egyenes alfában kell megadnia.
A típus D2D1_VECTOR_4F.
Az alapértelmezett érték a következő: {0.0f, 0.0f, 0.0f, 1.0f}.
Optimalizálás
D2D1_SHADOW_PROP_OPTIMIZATION
A teljesítményoptimalizálás szintje.
A típus D2D1_SHADOW_OPTIMIZATION.
Az alapértelmezett érték a D2D1_SHADOW_OPTIMIZATION_BALANCED.

Optimalizálási módok

Név Leírás
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Belső optimalizálásokat alkalmaz, például az előskálázást viszonylag kis radii értéken. Lineáris szűrést használ.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Ugyanazokat az optimalizálási küszöbértékeket használja, mint a Sebesség mód, de trilineáris szűrést használ.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Csak belső optimalizálást használ nagy életlenítési radiival, ahol a közelítések kevésbé valószínűek. Trilineáris szűrést használ.

Kimeneti bitkép

A kimeneti bitkép mérete az elmosódott kimenet mérete. A kimeneti bitkép eredeti bitképhez viszonyított növekedése az alábbi egyenlettel számítható ki:

Kimeneti bitkép növekedése (X és Y) = BlurStandardDeviation (eszközfüggetlen képpontok (DIP-k))*6*(Felhasználói DPI)/96

A kimenet minden irányban egyenlően növekszik, így például ha a méret minden irányban 10 képponttal nő, a bitkép bal felső sarka a (-5, -5) helyen található, a jobb alsó pedig (105, 105) lesz, ahogy az itt látható ábrán látható.

árnyékeffektus kimeneti méretének növekedési diagramja.

Követelmények

Követelmény Érték
Minimálisan támogatott ügyfél Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Minimálisan támogatott kiszolgáló Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Fejléc d2d1effects.h
Könyvtár d2d1.lib, dxguid.lib

ID2D1Effect