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.
- Exempelbild
- egenskaper för effekt
- optimeringslägen
- bitmapp för utdata
- Krav
- Relaterade ämnen
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 |
---|
![]() |
Efter |
![]() |
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.
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 |