Efecto discreto de transferencia
Use el efecto de transferencia discreta para asignar las densidades de color de una imagen mediante una función de transferencia de pasos creada a partir de una lista de valores que proporcione.
El CLSID de este efecto es CLSID_D2D1DiscreteTransfer.
- imagen de ejemplo
- propiedades Effect
- requisitos de
- temas relacionados
Imagen de ejemplo
La imagen aquí muestra la entrada y salida del efecto de transferencia discreta.
Antes |
---|
![]() |
Después |
![]() |
ComPtr<ID2D1Effect> discreteTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DiscreteTransfer, &discreteTransferEffect);
discreteTransferEffect->SetInput(0, bitmap);
float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(discreteTransferEffect.Get());
m_d2dContext->EndDraw();
La función de transferencia se basa en la lista de entradas: V=(V0,V1,V2,V3,V? ,VN) donde N es el número de elementos - 1.
La intensidad del píxel de entrada se representa como C. La intensidad del píxel de salida, C se calcula con la ecuación:
Para un valor C, elija un valor k, de modo que:
La salida C se puede calcular mediante la ecuación: C' = V?
Este efecto funciona en imágenes alfa rectas y premultiplicadas. El efecto genera mapas de bits alfa premultipados.
Este es el aspecto del gráfico de la función de transferencia discreta si las entradas son [0.25, 0.5, 0.75, 1.0]
.
Propiedades de efecto
Nota
Los valores de todos los canales de las propiedades de transferencia discretas no son unitarios y tienen un mínimo de 0,0 y un máximo de 1,0.
Enumeración de índice y nombre para mostrar | Tipo y valor predeterminado | Descripción |
---|---|---|
RedTable D2D1_DISCRETETRANSFER_PROP_RED_TABLE |
FLOAT[] {0.0f, 1.0f} |
Lista de valores usados para definir la función de transferencia para el canal Rojo. |
RedDisable D2D1_DISCRETETRANSFER_PROP_RED_DISABLE |
BOOL FALSO |
Si establece esta opción en TRUE, el efecto no aplica la función de transferencia al canal rojo. Si establece esta opción en FALSE, el efecto aplica la función RedDiscreteTransfer al canal rojo. |
GreenTable D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE |
FLOAT[] {0.0f, 1.0f} |
Lista de valores que definen la función de transferencia para el canal verde. |
GreenDisable D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE |
BOOL FALSO |
Si establece esta opción en TRUE, el efecto no aplica la función de transferencia al canal verde. Si establece esto en FALSE, el efecto aplica la función GreenDiscreteTransfer al canal verde. |
BlueTable D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE |
FLOAT[] {0.0f, 1.0f} |
Lista de valores que definen la función de transferencia para el canal Azul. |
BlueDisable D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE |
BOOL FALSO |
Si establece esta opción en TRUE, el efecto no aplica la función de transferencia al canal azul. Si establece esto en FALSE, el efecto aplica la función BlueDiscreteTransfer al canal azul. |
AlphaTable D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE |
FLOAT[] {0.0f, 1.0f} |
Lista de valores que definen la función de transferencia para el canal Alfa. |
AlphaDisable D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSO |
Si establece esta opción en TRUE, el efecto no aplica la función de transferencia al canal Alfa. Si establece esto en FALSE, el efecto aplica la función AlphaDiscreteTransfer al canal Alfa. |
ClampOutput D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALSO |
Si el efecto fija 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 fija los valores antes de que premultipe el alfa. 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. |
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 |