Condividi tramite


Effetto ombreggiatura

Usare l'effetto ombreggiatura per generare un'ombreggiatura dal canale alfa di un'immagine. L'ombreggiatura è più opaca per valori alfa più elevati e più trasparente per i valori alfa inferiori. È possibile impostare la quantità di blur e il colore dell'ombreggiatura.

ClSID per questo effetto è CLSID_D2D1Shadow.

Immagine di esempio

L'esempio seguente mostra l'output dell'effetto ombreggiatura tradotto in basso e destra con l'immagine di origine composita su di essa nella posizione originale. L'effetto ombreggiatura restituisce solo l'ombreggiatura.

Prima
immagine prima dell'effetto.
After
immagine dopo la trasformazione.
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();

Proprietà dell'effetto

Enumerazione nome visualizzato e indice Descrizione
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
Quantità di sfocatura da applicare al canale alfa dell'immagine. È possibile calcolare il raggio del blur del kernel moltiplicando la deviazione standard per 3. Le unità sia della deviazione standard che del raggio di blur sono DIP.
Questa proprietà è uguale alla proprietà di deviazione standard di Gaussian Blur .
Il tipo è FLOAT.
Il valore predefinito è 3.0f.
Color
D2D1_SHADOW_PROP_COLOR
Colore dell'ombreggiatura. Questa proprietà è una D2D1_VECTOR_4F definita come: (R, G, B, A). È necessario specificare questo colore in alfa dritto.
Il tipo è D2D1_VECTOR_4F.
Il valore predefinito è {0.0f, 0.0f, 0.0f, 1.0f}.
Optimization
D2D1_SHADOW_PROP_OPTIMIZATION
Livello di ottimizzazione delle prestazioni.
Il tipo è D2D1_SHADOW_OPTIMIZATION.
Il valore predefinito è D2D1_SHADOW_OPTIMIZATION_BALANCED.

Modalità di ottimizzazione

Nome Descrizione
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED Applica ottimizzazioni interne, ad esempio la pre-ridimensionamento a raggi relativamente piccoli. Usa il filtro lineare.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED Usa le stesse soglie di ottimizzazione della modalità Velocità, ma usa il filtro trilineare.
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY Usa solo ottimizzazioni interne con raggi di blur di grandi dimensioni, dove le approssimazioni sono meno probabili. Usa il filtro trilineare.

Bitmap di output

Le dimensioni della bitmap di output sono le dimensioni dell'output del blur. La quantità di crescita della bitmap di output rispetto alla bitmap originale può essere calcolata usando l'equazione seguente:

Crescita bitmap di output (X e Y) = BlurStandardDeviation (pixel indipendenti dal dispositivo )*6*(USER DPI)/96

L'output aumenta ugualmente in tutte le direzioni, ad esempio se le dimensioni aumentano di 10 pixel in ogni direzione, l'angolo superiore sinistro della bitmap si trova in corrispondenza (-5, -5) e la destra inferiore sarà a (105, 105) come illustrato nel diagramma qui.

diagramma di crescita delle dimensioni dell'effetto shadow.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Server minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Intestazione d2d1effects.h
Libreria d2d1.lib, dxguid.lib

ID2D1Effect