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