Efecto combinación
Use el efecto de combinación para combinar 2 imágenes. Este efecto tiene 26 modos de combinación.
El CLSID de este efecto es CLSID_D2D1Blend.
- Ejemplos de combinación
- Propiedades del efecto
- Modos de combinación
- Conversiones de espacio de colores HSL
- Mapa de bits de salida
- Código de ejemplo
- Requisitos
- Temas relacionados
Esta es una imagen de ejemplo de cada modo de combinación del efecto de combinación. 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();
Nombre para mostrar y enumeración del índice | Descripción |
---|---|
Modo D2D1_BLEND_PROP_MODE |
Modo de combinación utilizado para el efecto. Vea Modos de combinación para obtener más información. El tipo es D2D1_BLEND_MODE. El valor predeterminado es D2D1_BLEND_MODE_MULTIPLY. |
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
Donde:
- OPRGB es el color de salida multiplicado previamente
- OA es alfa de salida
- 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 el alfa de origen
- f(SRGB, DRGB) es una función de combinación que varía según el modo de combinación.
Algunos de los modos de combinación 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 combinación solo para alfa. |
D2D1_BLEND_MODE_MULTIPLY | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_COLOR_BURN | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_BURN | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_DARKER_COLOR | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_LIGHTEN | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_SCREEN | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_COLOR_DODGE | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_DODGE | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LIGHTER_COLOR | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_OVERLAY | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_SOFT_LIGHT | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_HARD_LIGHT | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_VIVID_LIGHT | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_LINEAR_LIGHT | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_PIN_LIGHT | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_HARD_MIX | Fórmulas de combinación básicas con f(FRGB, BRGB) = |
D2D1_BLEND_MODE_DIFFERENCE | Fórmulas de combinación básicas con f(FRGB, BRGB) = abs(FRGB - BRGB) |
D2D1_BLEND_MODE_EXCLUSION | Fórmulas de combinación básicas con f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB |
D2D1_BLEND_MODE_HUE | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_SATURATION | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_COLOR | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_LUMINOSITY | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_DISSOLVE | Con estas premisas:
|
D2D1_BLEND_MODE_SUBTRACT | Fórmula básica de combinación solo para alfa. |
D2D1_BLEND_MODE_DIVISION | Fórmula básica de combinación solo para alfa. |
Nota
Para todos los modos de combinación, el valor de salida está premultipado y se fija en el intervalo [0, 1].
El componente de luminosidad se calcula mediante los pesos RGB aquí:
- kR = 0,30
- kG = 0,59
- kB = 0,11
Esto coloca S y L en el intervalo [0,0, 1,0] y H en el intervalo [-1.0, 5.0].
Para hacer la conversión de otra manera usamos el inverso de los cálculos anteriores.
Si S = 0 then 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/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 combinación 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:
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.
Para obtener un ejemplo de este efecto, descargue el ejemplo de modos de efecto compuesto direct2D.
Requisito | Valor |
---|---|
Cliente mínimo compatible | 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 |