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 superiori e più trasparente per i valori alfa inferiori. È possibile impostare la quantità di sfocatura e il colore dell'ombreggiatura.

Il CLSID per questo effetto è CLSID_D2D1Shadow.

Immagine di esempio

L'esempio seguente mostra l'output dell'effetto ombreggiatura tradotto verso il basso e a destra con l'immagine di origine composta sopra di essa nella posizione originale. L'effetto ombreggiatura restituisce solo l'ombreggiatura.

Prima
l'immagine prima dell'effetto.
Dopo
'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 del nome visualizzato e dell'indice Descrizione
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
Quantità di sfocatura da applicare al canale alfa dell'immagine. È possibile calcolare il raggio di sfocatura del kernel moltiplicando la deviazione standard per 3. Le unità sia della deviazione standard che del raggio di sfocatura sono DIP.
Questa proprietà corrisponde alla proprietà blur gaussiano proprietà di deviazione standard.
Il tipo è FLOAT.
Il valore predefinito è 3,0f.
Colore
D2D1_SHADOW_PROP_COLOR
Colore dell'ombreggiatura. Questa proprietà è un D2D1_VECTOR_4F definito come: (R, G, B, A). È necessario specificare questo colore in alfa retto.
Il tipo è D2D1_VECTOR_4F.
Il valore predefinito è {0.0f, 0.0f, 0.0f, 1.0f}.
Ottimizzazione
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 il 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 sfocatura di grandi dimensioni, in cui le approssimazioni hanno meno probabilità di essere visibili. Usa il filtro trilineare.

Bitmap di output

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

Output Bitmap Growth (X and Y) = BlurStandardDeviation (DEVICE-independent pixel (DIP)*6*(User DPI)/96

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

diagramma di crescita delle dimensioni dell'effetto ombreggiatura.

Fabbisogno

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
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect