Efeito de matriz de cores
Use o efeito de matriz de cores para alterar os valores RGBA de um bitmap.
Você pode usar esse efeito para:
- Remova um canal de cores de uma imagem.
- Reduza a cor em uma imagem.
- Trocar canais de cores.
- Combinar canais de cores.
Muitos efeitos internos são especializações de matriz de cores otimizadas para o uso pretendido dos efeitos. Os exemplos incluem saturação, rotação de matiz, sépia e temperatura e tonalidade.
O CLSID para esse efeito é CLSID_D2D1ColorMatrix.
Imagem de exemplo
O exemplo aqui mostra as imagens de entrada e saída do efeito de matriz de cores que troca os canais vermelho e azul.
Antes |
---|
After (após) |
ComPtr<ID2D1Effect> colorMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ColorMatrix, &colorMatrixEffect);
colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(colorMatrixEffect.Get());
m_d2dContext->EndDraw();
Esse efeito multiplica os valores RGBA da imagem por uma matriz principal de coluna 5x4, conforme mostrado nesta equação.
Esse efeito funciona em imagens alfa retas e pré-multiplicadas.
Propriedades do efeito
Nome de exibição e enumeração de índice | Descrição |
---|---|
Colormatrix D2D1_COLORMATRIX_PROP_COLOR_MATRIX |
Uma matriz 5x4 de valores float. Os elementos na matriz não são limitados e são sem unidade. O padrão é a matriz de identidade. O tipo é D2D1_MATRIX_5X4_F. O valor padrão é Matrix5x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0). |
AlphaMode D2D1_COLORMATRIX_PROP_ALPHA_MODE |
O modo alfa da saída. Confira Modos alfa para obter mais informações. O tipo é D2D1_COLORMATRIX_ALPHA_MODE. O valor padrão é D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED. |
ClampOutput D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT |
Se o efeito fixa valores de cor entre 0 e 1 antes que o efeito passe os valores para o próximo efeito no grafo. O efeito fixa os valores antes de pré-multiplicar o alfa . 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. |
Modos alfa
Nome | Descrição |
---|---|
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED | O efeito não pré-multiplica a entrada, aplica a matriz de cores e pré-multiplica a saída. |
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT | O efeito aplica a matriz de cores diretamente à entrada e não faz a pré-inicialidade da saída. |
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 |