Efecto de transferencia gamma

Utilice el efecto de transferencia gamma para asignar las intensidades de color de una imagen mediante una función gamma creada mediante una amplitud, exponente y desplazamiento que proporcione para cada canal.

El CLSID de este efecto es CLSID_D2D1GammaTransfer. Para usar este efecto, agregue dxguid.lib a las dependencias del vinculador.

Imagen de ejemplo

Antes
la imagen antes del efecto.
Después
la imagen después de la transformación.
ComPtr<ID2D1Effect> gammaTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1GammaTransfer, &gammaTransferEffect);

gammaTransferEffect->SetInput(0, bitmap);

gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(gammaTransferEffect.Get());
m_d2dContext->EndDraw();

Este efecto aplica una función de transferencia gamma basada en la ecuación aquí.

La intensidad del píxel de entrada se representa como C y la intensidad del píxel de salida como C'. C' = Amplitude * CExponent + Offset

Este efecto funciona en imágenes alfa rectas y premultiplicadas. El efecto genera mapas de bits alfa premultiplicados.

Propiedades de efecto

Nota:

Para todos los canales de las propiedades de transferencia gamma:

  • El valor de amplitud no está limitado y no tiene unidad.
  • El valor del exponente no está limitado y no tiene unidad.
  • El valor de desplazamiento no está limitado y no tiene unidad.
Enumeración de nombre para mostrar e índice Descripción
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Amplitud de la función de transferencia gamma para el canal Rojo. El tipo es FLOAT.
El valor predeterminado es 1.0f.
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Exponente de la función de transferencia gamma para el canal Rojo. El tipo es FLOAT.
El valor predeterminado es 1.0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Desplazamiento de la función de transferencia gamma para el canal Rojo. El tipo es FLOAT.
El valor predeterminado es 0,0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Si se establece en TRUE, no se aplica la función de transferencia al canal rojo. Se usa una función de transferencia de identidad. Si establece esto en FALSE, aplica la función de transferencia gamma al canal rojo. El tipo es BOOL.
El valor predeterminado es FALSE.
GreenAmplitude
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
Amplitud de la función de transferencia gamma para el canal verde. El tipo es FLOAT.
El valor predeterminado es 1.0f.
GreenExponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
Exponente de la función de transferencia gamma para el canal verde. El tipo es FLOAT.
El valor predeterminado es 1.0f.
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
Desplazamiento de la función de transferencia gamma para el canal verde. El tipo es FLOAT.
El valor predeterminado es 0,0f.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Si establece esto en TRUE, no aplica la función de transferencia al canal verde. Se usa una función de transferencia de identidad. Si establece esto en FALSE, aplica la función de transferencia gamma al canal verde. El tipo es BOOL.
El valor predeterminado es FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Amplitud de la función de transferencia gamma para el canal azul. El tipo es FLOAT.
El valor predeterminado es 1.0f.
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Exponente de la función de transferencia gamma para el canal Azul. El tipo es FLOAT.
El valor predeterminado es 1.0f.
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Desplazamiento de la función de transferencia gamma para el canal Azul. El tipo es FLOAT.
El valor predeterminado es 0,0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Si establece esto en TRUE, no aplica la función de transferencia al canal Azul. Se usa una función de transferencia de identidad. Si establece esto en FALSE, aplica la función de transferencia gamma al canal azul. El tipo es BOOL.
El valor predeterminado es FALSE.
AlfaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Amplitud de la función de transferencia gamma para el canal alfa. El tipo es FLOAT.
El valor predeterminado es 1.0f.
AlphaExponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Exponente de la función de transferencia gamma para el canal alfa. El tipo es FLOAT.
El valor predeterminado es 1.0f.
AlphaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
Desplazamiento de la función de transferencia gamma para el canal alfa. El tipo es FLOAT.
El valor predeterminado es 0,0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Si se establece en TRUE, no se aplica la función de transferencia al canal alfa. Se usa una función de transferencia de identidad. Si establece esto en FALSE, aplica la función de transferencia gamma al canal alfa. El tipo es BOOL.
El valor predeterminado es FALSE.
ClampOutput
D2D1_GAMMATRANSFER_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.

Mapa de bits de salida

El tamaño del mapa de bits de salida es el mismo que el tamaño del mapa de bits 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

ID2D1Effect