Delen via


Schaduweffect

Gebruik het schaduweffect om een schaduw te genereren van het alfakanaal van een afbeelding. De schaduw is ondoorzichtig voor hogere alfawaarden en transparanter voor lagere alfawaarden. U kunt de hoeveelheid vervagen en de kleur van de schaduw instellen.

De CLSID voor dit effect is CLSID_D2D1Shadow.

Voorbeeldafbeelding

In het voorbeeld ziet u de uitvoer van het schaduweffect dat is vertaald naar beneden en rechts met de bronafbeelding die erop is samengesteld op de oorspronkelijke locatie. Het schaduweffect voert alleen de schaduw uit.

Voor
de afbeelding vóór het effect.
Na
de afbeelding na de transformatie.
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();

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
De hoeveelheid vervagen die moet worden toegepast op het alfakanaal van de afbeelding. U kunt de vervagende straal van de kernel berekenen door de standaarddeviatie te vermenigvuldigen met 3. De eenheden van zowel de standaarddeviatie als de blurstraal zijn DIPs.
Deze eigenschap is hetzelfde als de eigenschap Gaussian Blur standaarddeviatie.
Het type is FLOAT.
De standaardwaarde is 3,0f.
Kleur
D2D1_SHADOW_PROP_COLOR
De kleur van de slagschaduw. Deze eigenschap is een D2D1_VECTOR_4F gedefinieerd als: (R, G, B, A). U moet deze kleur in rechte alfa opgeven.
Het type is D2D1_VECTOR_4F.
De standaardwaarde is {0.0f, 0.0f, 0.0f, 1.0f}.
Optimalisering
D2D1_SHADOW_PROP_OPTIMIZATION
Het prestatieoptimalisatieniveau.
Het type is D2D1_SHADOW_OPTIMIZATION.
De standaardwaarde is D2D1_SHADOW_OPTIMIZATION_BALANCED.

Optimalisatiemodi

Naam Beschrijving
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Hiermee past u interne optimalisaties toe, zoals vooraf schalen op relatief kleine radii. Maakt gebruik van lineair filteren.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Gebruikt dezelfde optimalisatiedrempels als de snelheidsmodus, maar maakt gebruik van trilineaire filters.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Maakt alleen gebruik van interne optimalisaties met grote vervagende radii, waarbij benaderingen minder waarschijnlijk zichtbaar zijn. Maakt gebruik van trilineaire filtering.

Uitvoer bitmap

De grootte van de uitvoer bitmap is de grootte van de vervagende uitvoer. De hoeveelheid die de groei van de uitvoer bitmap ten opzichte van de oorspronkelijke bitmap ten opzichte van de oorspronkelijke bitmap kan worden berekend met behulp van de volgende vergelijking:

Output Bitmap Growth (X en Y) = BlurStandardDeviation (apparaatonafhankelijke pixels (DIPs))*6*(User DPI)/96

De uitvoer neemt in alle richtingen gelijk toe, dus als de grootte met 10 pixels in elke richting toeneemt, bevindt de linkerbovenhoek van de bitmap zich op (-5, -5) en bevindt de rechterbenedenhoek zich op (105, 105) zoals in het diagram hier wordt weergegeven.

schaduweffect groeidiagram van uitvoergrootte.

Eisen

Eis Waarde
Minimaal ondersteunde client Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Minimaal ondersteunde server Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Rubriek d2d1effects.h
Bibliotheek d2d1.lib, dxguid.lib

ID2D1Effect-