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 |
---|
![]() |
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();
Este efeito multiplica os valores RGBA da imagem por uma matriz principal de coluna 5x4, como mostrado nesta equação.
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 |