Partilhar via


Efeito de matriz de cores

Use o efeito de matriz de cores para alterar os valores RGBA de um bitmap.

Pode utilizar este efeito para:

  • Remova um canal de cores de uma imagem.
  • Reduza a cor de uma imagem.
  • Troque canais de cor.
  • Combine canais de cores.

Muitos efeitos internos são especializações de matriz de cores que são otimizadas para o uso pretendido dos efeitos. Exemplos incluem de saturação, matiz girar, sépiae temperatura e tonalidade.

O CLSID para este 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.
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();

Este efeito multiplica os valores RGBA da imagem por uma matriz principal de coluna 5x4, como mostrado nesta equação.

um exemplo de definição de matriz.

Este efeito funciona em imagens alfa retas e pré-multiplicadas.

Propriedades do efeito

Nome para exibição e enumeração de índice Descrição
Matriz de cores
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Uma matriz 5x4 de valores flutuantes. 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. Consulte modos Alpha 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 os valores de cor entre 0 e 1 antes que o efeito passe os valores para o próximo efeito no gráfico. O efeito fixa os valores antes de pré-multiplicar o alfa.
Se você definir isso como TRUE, o efeito apertará 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 apertar os valores se eles não forem de precisão suficiente.
O tipo é BOOL.
O valor padrão é FALSE.

Modos alfa

Designação Descrição
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED O efeito desmultiplica 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 multiplica previamente a saída.

Requerimentos

Exigência Valor
Cliente mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Servidor mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect