Efeito composto aritmético
Use o efeito composto aritmético para combinar 2 imagens usando uma soma ponderada de pixels das imagens de entrada.
O CLSID para esse efeito é CLSID_D2D1ArithmeticComposite.
Fórmula
A fórmula aqui é usada para calcular esse efeito.
Saídargba = C1 *Source rgba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Onde C1, C2, C3, C4 são coeficientes definidos.
Os coeficientes são mapeados para os valores em um D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Imagem de exemplo
Um exemplo simples é adicionar os pixels de origem e de destino. No exemplo, dois retângulos arredondados são compostos juntos. O retângulo de origem é azul e o destino é vermelho.
A imagem aqui é a saída do efeito Composto Aritmético com os coeficientes da equação definida com os valores aqui.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
O resultado é que os valores de pixel para a origem e o destino são adicionados. As regiões em que os retângulos não se sobrepõem aos valores RGBA são todas 0. Onde os retângulos se sobrepõem à cor é magenta porque os valores R e B estão no máximo.
Aqui está outra imagem de exemplo com código.
Antes da imagem 1 |
---|
Antes da imagem 2 |
After (após) |
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();
Propriedades de efeito
Nome de exibição e enumeração de índice | Descrição |
---|---|
Coeficientes D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Os coeficientes para a equação usada para compor as duas imagens de entrada. Os coeficientes são sem unidade e não associados. O tipo é D2D1_VECTOR_4F. O valor padrão é {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
O efeito fixa valores de cor entre 0 e 1 antes que o efeito passe os valores para o próximo efeito no grafo. Se você definir isso como TRUE, o efeito fixará os valores. Se você definir isso como FALSE, o efeito não fixará os valores de cor, mas outros efeitos e a superfície de saída poderão fixar os valores se eles não forem de precisão alta o suficiente. O tipo é BOOL. O valor padrão é FALSE. |
Bitmap de saída
O bitmap de saída depende dos valores de coeficiente. Esses são os possíveis tamanhos de bitmap de saída.
- Se C1 for o único coeficiente diferente de zero, o tamanho da saída será a interseção dos retângulos de entrada.
- Se C2 for o único coeficiente diferente de zero, o tamanho da saída será o tamanho do retângulo De origem.
- Se C3 for o único coeficiente diferente de zero, o tamanho da saída será o tamanho do retângulo De destino..
- Se todos os coeficientes forem zero, o tamanho da saída será um retângulo vazio.
- Para todos os outros valores de coeficiente, o tamanho da saída é a união dos retângulos de entrada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Servidor mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |