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.
- formula
- imagen de ejemplo
- propiedades Effect
- de mapa de bits de salida
- requisitos de
- temas relacionados
Fórmula
La fórmula aquí se usa para calcular este efecto.
Salidargba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Donde C1, C2, C3, C4 son coeficientes establecidos.
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, 2 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 superponen el 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 índice y nombre para mostrar | Descripción |
---|---|
Coeficientes D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Coeficientes de la ecuación usada para componer las dos imágenes de entrada. Los coeficientes son unitarios y sin enlazar. 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 fijará los valores. Si se establece en FALSE, el efecto no sujetará los valores de color, pero otros efectos y la superficie de salida pueden sujetar los valores si no son de precisión suficiente. El tipo es BOOL. El valor predeterminado es FALSE. |
Mapa de bits de salida
El mapa de bits de salida depende de los valores del 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 | Valor |
---|---|
Cliente mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo admitido | Windows 8 y Platform Update para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |