Efecto blend
Use el efecto de mezcla para combinar 2 imágenes. Este efecto tiene 26 modos de mezcla.
El CLSID de este efecto es CLSID_D2D1Blend.
- ejemplos de mezcla de
- propiedades Effect
- modos blend
- conversiones de espacio de color HSL
- de mapa de bits de salida
- código de ejemplo
- requisitos de
- temas relacionados
Ejemplos de combinación
Esta es una imagen de ejemplo de cada modo de mezcla del efecto de mezcla. Una lista completa de los modos de combinación y las propiedades de modo correspondientes se encuentran en la sección siguiente.
Este es otro ejemplo mediante el modo de exclusión.
Antes de la imagen 1 |
---|
![]() |
Antes de la imagen 2 |
![]() |
Después |
![]() |
ComPtr<ID2D1Effect> blendEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Blend, &blendEffect);
blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(blendEffect.Get());
m_d2dContext->EndDraw();
Propiedades de efecto
Enumeración de índice y nombre para mostrar | Descripción |
---|---|
Modo D2D1_BLEND_PROP_MODE |
Modo de mezcla utilizado para el efecto. Consulta modos blend para obtener más información. El tipo es D2D1_BLEND_MODE. El valor predeterminado es D2D1_BLEND_MODE_MULTIPLY. |
Modos de mezcla
En la tabla siguiente se muestran todos los modos de combinación de este efecto. Las funciones auxiliares necesarias para calcular la salida del efecto se encuentran en la sección siguiente.
Color: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)
Alfa: OA = FA * (1 - BA) + BA
Dónde:
- OPRGB es el color de salida multiplicado previamente
- OA es Output Alpha
- BRGB es el color de destino no multiplicado previamente
- BA es el alfa de destino
- FRGB es el color de origen no multiplicado previamente
- FA es alfa de origen
- f(SRGB, DRGB) es una función de mezcla que varía según el modo de mezcla
Algunos de los modos de mezcla requieren conversión hacia y desde el tono, saturación, luminosidad (HSL) espacio de color a RGB.
Enumeración | Ecuación |
---|---|
D2D1_BLEND_MODE_DARKEN | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_MULTIPLY | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_COLOR_BURN | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_LINEAR_BURN | Fórmulas básicas de mezcla con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_DARKER_COLOR | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_LIGHTEN | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_SCREEN | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_COLOR_DODGE | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_LINEAR_DODGE | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_LIGHTER_COLOR | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_OVERLAY | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_SOFT_LIGHT | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_HARD_LIGHT | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_VIVID_LIGHT | Fórmulas básicas de mezcla con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_LINEAR_LIGHT | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_PIN_LIGHT | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_HARD_MIX | Fórmulas de mezcla básicas con f(FRGB, BRGB) = ![]() |
D2D1_BLEND_MODE_DIFFERENCE | Fórmulas básicas de mezcla con f(FRGB, BRGB) = abs(FRGB - BRGB) |
D2D1_BLEND_MODE_EXCLUSION | Fórmulas de mezcla básicas con f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB |
D2D1_BLEND_MODE_HUE | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_SATURATION | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_COLOR | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_LUMINOSITY | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_DISSOLVE | Dado:
![]() |
D2D1_BLEND_MODE_SUBTRACT | Fórmula básica de mezcla solo para alfa.
![]() |
D2D1_BLEND_MODE_DIVISION | Fórmula básica de mezcla solo para alfa.
![]() |
Nota
Para todos los modos Blend, el valor de salida está premultipado y se fija en el intervalo [0, 1].
Conversiones de espacio de color HSL
El componente de luminosidad se calcula mediante los pesos RGB aquí:
- kR = 0,30
- kG = 0,59
- kB = 0,11
Conversión de RGB a HSL
Esto coloca S y L en el intervalo [0.0, 1.0] y H en el intervalo [-1.0, 5.0].
Conversión de HSL a RGB
Para convertir la otra manera usamos el inverso de los cálculos anteriores.
Si S = 0, R = G = B = L
De lo contrario, hay seis casos dependientes del matiz:
Si H es mayor que 0, los valores se encuentran en el sector rojo/magenta, donde R>B>G.
Si H es mayor o igual que 0 y menor que 1, los valores se encuentran en el sector rojo/amarillo donde R>G>B.
Si H es mayor o igual que 1 y menor que 2, los valores se encuentran en el sector amarillo o verde donde G>R>B.
Si H es mayor o igual que 2 y menor que 3, los valores se encuentran en el sector verde/cian donde G>B>R.
Si H es mayor o igual que 3 y menor que 4, los valores se encuentran en el sector cian/azul donde B>G>R.
Si H es mayor o igual que 4, los valores se encuentran en el sector azul/magenta donde B>R>G.
Dado que los modos de mezcla hacen combinaciones arbitrarias de componentes HSL de dos colores diferentes, es habitual que el valor RGB convertido sea fuera de gama, es decir, uno o varios componentes de canal pueden estar fuera del intervalo legal de [0.0, 1.0]. Estos colores se devuelven a la gama reduciendo mínimamente la saturación, al tiempo que conservan el tono y la luminosidad:
Mapa de bits de salida
El mapa de bits de salida de este efecto es siempre el tamaño de la unión de las dos imágenes de entrada.
Código de ejemplo
Para obtener un ejemplo de este efecto, descargue el ejemplo de modos de efecto compuesto Direct2D.
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 |