Dela via


Skuggeffekt

Använd skuggeffekten för att generera en skugga från en bilds alfakanal. Skuggan är mer ogenomskinlig för högre alfavärden och mer transparent för lägre alfavärden. Du kan ange mängden oskärpa och skuggans färg.

CLSID för den här effekten är CLSID_D2D1Shadow.

Exempelbild

Exemplet här visar utdata från skuggeffekten översätts nedåt och höger med källbilden sammansatt över den på den ursprungliga platsen. Skuggeffekten matar bara ut skuggan.

Före
bilden före effekten.
Efter
bilden efter transformen.
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();

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
Mängden oskärpa som ska tillämpas på bildens alfakanal. Du kan beräkna kärnans radie med oskärpa genom att multiplicera standardavvikelsen med 3. Enheterna för både standardavvikelsen och radien för oskärpa är DIP:er.
Den här egenskapen är densamma som egenskapen Gaussian Blur standardavvikelse.
Typen är FLOAT.
Standardvärdet är 3,0f.
Färg
D2D1_SHADOW_PROP_COLOR
Skuggornas färg. Den här egenskapen är en D2D1_VECTOR_4F definierad som: (R, G, B, A). Du måste ange den här färgen i rak alfa.
Typen är D2D1_VECTOR_4F.
Standardvärdet är {0.0f, 0.0f, 0.0f, 1.0f}.
Optimering
D2D1_SHADOW_PROP_OPTIMIZATION
Nivån på prestandaoptimeringen.
Typen är D2D1_SHADOW_OPTIMIZATION.
Standardvärdet är D2D1_SHADOW_OPTIMIZATION_BALANCED.

Optimeringslägen

Namn Beskrivning
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Tillämpar interna optimeringar, till exempel förskalning vid relativt liten radi. Använder linjär filtrering.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Använder samma optimeringströsklar som hastighetsläge, men använder trilinär filtrering.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Använder endast interna optimeringar med radier med stor oskärpa, där uppskattningar är mindre benägna att vara synliga. Använder trilinär filtrering.

Utdatabitmapp

Storleken på utdatabitmappen är storleken på oskärpautdata. Mängden utdatabitmappstillväxt i förhållande till den ursprungliga bitmappen kan beräknas med hjälp av följande ekvation:

Utdatabitmappstillväxt (X och Y) = BlurStandardDeviation (enhetsoberoende bildpunkter (DIP:er))*6*(Användar-DPI)/96

Utdata ökar lika i alla riktningar, så om storleken till exempel ökar med 10 bildpunkter i varje riktning, finns det övre vänstra hörnet i bitmappen vid (-5, -5) och den nedre högra kommer att vara på (105, 105) som visas i diagrammet här.

diagram över utdatastorlek för skuggeffekt.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect