Effetto composito aritmetico
Usare l'effetto composito aritmetico per combinare 2 immagini usando una somma ponderata di pixel dalle immagini di input.
Il CLSID per questo effetto è CLSID_D2D1ArithmeticComposite.
Formula
La formula qui viene usata per calcolare questo effetto.
Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Dove C1, C2, C3, C4 sono coefficienti impostati.
I coefficienti sono mappati ai valori in un D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Immagine di esempio
Un semplice esempio consiste nell'aggiungere i pixel di origine e di destinazione. Nell'esempio, due rettangoli arrotondati vengono composti insieme. Il rettangolo di origine è blu e la destinazione è rossa.
L'immagine seguente è l'output dell'effetto composito aritmetico con i coefficienti dell'equazione impostata sui valori qui.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Il risultato è che vengono aggiunti i valori pixel per l'origine e la destinazione. Le aree in cui i rettangoli non si sovrappongono ai valori RGBA sono tutti 0. Dove i rettangoli si sovrappongono al colore è magenta perché i valori R e B sono entrambi al massimo.
Ecco un'altra immagine di esempio con codice.
Prima dell'immagine 1 |
---|
Prima dell'immagine 2 |
After |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Descrizione |
---|---|
Coefficienti D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Coefficienti per l'equazione usata per comporre le due immagini di input. I coefficienti sono unitless e non associati. Il tipo è D2D1_VECTOR_4F. Il valore predefinito è {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
L'effetto blocca i valori di colore su tra 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. Se si imposta questa proprietà su TRUE, l'effetto blocca i valori. Se si imposta questa proprietà su FALSE, l'effetto non blocca i valori di colore, ma altri effetti e la superficie di output possono bloccare i valori se non sono sufficientemente precisi. Il tipo è BOOL. Il valore predefinito è FALSE. |
Bitmap di output
La bitmap di output dipende dai valori del coefficiente. Si tratta delle possibili dimensioni delle bitmap di output.
- Se C1 è l'unico coefficiente diverso da zero, la dimensione dell'output è l'intersezione dei rettangoli di input.
- Se C2 è l'unico coefficiente diverso da zero, le dimensioni dell'output sono le dimensioni del rettangolo di origine.
- Se C3 è l'unico coefficiente diverso da zero, la dimensione dell'output è la dimensione del rettangolo Destination.
- Se tutti i coefficienti sono zero, la dimensione dell'output è un rettangolo vuoto.
- Per tutti gli altri valori di coefficiente, la dimensione dell'output è l'unione dei rettangoli di input.
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 |