Efecto compuesto aritmético
Use el efecto compuesto aritmético para combinar 2 imágenes mediante una suma ponderada de píxeles de las imágenes de entrada.
El CLSID de este efecto es CLSID_D2D1ArithmeticComposite.
- Fórmula
- Imagen de ejemplo
- Propiedades de efecto
- Mapa de bits de salida
- Requisitos
- Temas relacionados
Fórmula
La fórmula aquí se usa para calcular este efecto.
Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Donde C1, C2, C3, C4 son coeficientes que se establecen.
Los coeficientes se asignan a los valores de un D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Imagen de ejemplo
Un ejemplo sencillo es agregar los píxeles de origen y destino. En el ejemplo, dos rectángulos redondeados se componen juntos. El rectángulo de origen es azul y el destino es rojo.
La imagen aquí es la salida del efecto compuesto aritmético con los coeficientes de la ecuación establecida en los valores aquí.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
El resultado es que se agregan los valores de píxeles para el origen y el destino. Las regiones en las que los rectángulos no se superponen a los valores RGBA son 0. Donde los rectángulos se superponen al color es magenta porque los valores de R y B están en el máximo.
Esta es otra imagen de ejemplo con código.
Antes de la imagen 1 |
---|
Antes de la imagen 2 |
Después |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Propiedades de efecto
Enumeración de nombre para mostrar e índice | Descripción |
---|---|
Coeficientes D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Coeficientes de la ecuación usada para componer las dos imágenes de entrada. Los coeficientes son a menos que y no estén enlazados. El tipo es D2D1_VECTOR_4F. El valor predeterminado es {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
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. 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. |
Mapa de bits de salida
El mapa de bits de salida depende de los valores de coeficiente. Estos son los posibles tamaños de mapa de bits de salida.
- Si C1 es el único coeficiente distinto de cero, el tamaño de salida es la intersección de los rectángulos de entrada.
- Si C2 es el único coeficiente distinto de cero, el tamaño de salida es el tamaño del rectángulo de origen.
- Si C3 es el único coeficiente distinto de cero, el tamaño de salida es el tamaño del rectángulo de destino.
- Si todos los coeficientes son cero, el tamaño de salida es un rectángulo vacío.
- Para todos los demás valores de coeficiente, el tamaño de salida es la unión de los rectángulos de entrada.
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 |