Efeito de transferência discreta
Use o efeito de transferência discreta para mapear as intensidades de cor de uma imagem usando uma função de transferência de etapa criada a partir de uma lista de valores fornecida.
O CLSID para este efeito é CLSID_D2D1DiscreteTransfer.
Imagem de exemplo
A imagem aqui mostra a entrada e saída do efeito de transferência discreta.
Antes |
---|
![]() |
Apó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();
A função de transferência é baseada na lista de entradas: V=(V0,V1,V2,V3,V? ,VN) onde N é o número de elementos - 1.
A intensidade do pixel de entrada é representada como C. A intensidade do pixel de saída, C é calculada com a equação:
Para um valor C, escolha um valor k, tal que:
A saída C pode ser calculada usando a equação: C' = V?
Este efeito funciona em imagens alfa retas e pré-multiplicadas. O efeito produz bitmaps alfa pré-multiplicados.
Aqui está o que o gráfico da função de transferência discreta parece se as entradas são [0.25, 0.5, 0.75, 1.0]
.
Propriedades do efeito
Observação
Os valores de todos os canais das propriedades de transferência discreta são sem unidade e têm um mínimo de 0,0 e um máximo de 1,0.
Nome para exibição e enumeração de índice | Tipo e valor padrão | Descrição |
---|---|---|
RedTable D2D1_DISCRETETRANSFER_PROP_RED_TABLE |
FLUTUAR[] {0.0f, 1.0f} |
A lista de valores usados para definir a função de transferência para o canal vermelho. |
RedDisable D2D1_DISCRETETRANSFER_PROP_RED_DISABLE |
BOOL FALSO |
Se você definir isso como TRUE, o efeito não aplicará a função de transferência ao canal vermelho. Se você definir isso como FALSE o efeito aplicará a função RedDiscreteTransfer ao canal Red. |
Tabela Verde D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE |
FLUTUAR[] {0.0f, 1.0f} |
A lista de valores que definem a função de transferência para o canal verde. |
GreenDesativar D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE |
BOOL FALSO |
Se você definir isso como TRUE, o efeito não aplicará a função de transferência ao canal verde. Se você definir isso como FALSE o efeito aplicará a função GreenDiscreteTransfer ao canal Green. |
Mesa Azul D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE |
FLUTUAR[] {0.0f, 1.0f} |
A lista de valores que definem a função de transferência para o canal azul. |
BlueDisable D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE |
BOOL FALSO |
Se você definir isso como TRUE, o efeito não aplicará a função de transferência ao canal azul. Se você definir isso como FALSE o efeito aplicará a função BlueDiscreteTransfer ao canal Blue. |
Tabela alfa D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE |
FLUTUAR[] {0.0f, 1.0f} |
A lista de valores que definem a função de transferência para o canal Alpha. |
AlphaDisable D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSO |
Se você definir isso como TRUE o efeito não aplicará a função de transferência para o canal Alpha. Se você definir isso como FALSE o efeito aplicará a função AlphaDiscreteTransfer ao canal Alpha. |
ClampOutput D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALSO |
Se o efeito fixa os valores de cor entre 0 e 1 antes que o efeito passe os valores para o próximo efeito no gráfico. O efeito fixa os valores antes de pré-multiplicar o alfa. Se você definir isso como TRUE, o efeito apertará os valores. Se você definir isso como FALSE, o efeito não fixará os valores de cor, mas outros efeitos e a superfície de saída poderão apertar os valores se eles não forem de precisão suficiente. |
Requerimentos
Exigência | Valor |
---|---|
Cliente mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Servidor mínimo suportado | Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows] |
Cabeçalho | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |