Compartir a través de


Efecto de matriz de color

Utilice el efecto de matriz de colores para modificar los valores RGBA de un mapa de bits.

Puede usar este efecto para:

  • Quite un canal de color de una imagen.
  • Reduzca el color de una imagen.
  • Intercambiar canales de color.
  • Combinar canales de color.

Muchos efectos integrados son especializaciones de matriz de colores optimizadas para el uso previsto de los efectos. Algunos ejemplos son saturación, rotación de matiz, sepia y temperatura y tono.

El CLSID de este efecto es CLSID_D2D1ColorMatrix.

Imagen de ejemplo

En el ejemplo siguiente se muestran las imágenes de entrada y salida del efecto de matriz de colores que intercambia los canales rojo y azul.

Antes
la imagen antes del efecto.
Después
la imagen después de la transformación.
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 efecto multiplica los valores RGBA de la imagen por una matriz principal de columna 5x4, como se muestra en esta ecuación.

una definición de matriz de ejemplo.

Este efecto funciona en imágenes alfa rectas y premultiplicadas.

Propiedades de efecto

Enumeración de nombre para mostrar e índice Descripción
Colormatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Matriz de 5x4 de valores float. Los elementos de la matriz no están limitados y no están unidos.
El valor predeterminado es la matriz de identidad.
El tipo es D2D1_MATRIX_5X4_F.
El valor predeterminado es Matrix5x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Modo alfa de la salida. Consulta Modos alfa para obtener más información.
El tipo es D2D1_COLORMATRIX_ALPHA_MODE.
El valor predeterminado es D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Si el efecto sujeta los valores de color a entre 0 y 1 antes de que el efecto pase los valores al siguiente efecto del gráfico. El efecto sujeta los valores antes de que premulte el alfa .
Si establece esto en TRUE, el efecto restringirá los valores. Si establece esto en FALSE, el efecto no sujetará los valores de color, pero otros efectos y la superficie de salida pueden sujetar los valores si no tienen una precisión lo suficientemente alta.
El tipo es BOOL.
El valor predeterminado es FALSE.

Modos alfa

Nombre Descripción
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED El efecto anula la premultiplicación de la entrada, aplica la matriz de colores y premultiplica la salida.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT El efecto aplica la matriz de colores directamente a la entrada y no premultipamente la salida.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows]
Servidor mínimo compatible Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows]
Encabezado d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect