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
a imagem antes do efeito.
After (após)
a imagem após a transformação.
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.

uma definição de matriz de exemplo.

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

ID2D1Effect