Compartilhar via


Efeito de transferência discreto

Use o efeito de transferência discreto 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 que você fornece.

O CLSID para esse efeito é CLSID_D2D1DiscreteTransfer.

Imagem de exemplo

A imagem aqui mostra a entrada e a saída do efeito de transferência discreto.

Antes
a imagem antes do efeito.
After (após)
a imagem após a transformação.
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 baseia-se na lista de entradas: V=(V0,V1,V2,V3,V? , VN) em que 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, de modo que:

fórmula para o processo.

A saída C pode ser calculada usando a equação: C' = V?

Esse efeito funciona em imagens alfa retas e pré-multiplicadas. O efeito gera bitmaps alfa pré-multiplicados.

Veja a aparência do grafo da função de transferência discreta se as entradas forem [0.25, 0.5, 0.75, 1.0].

grafo de intensidade de pixel para a função de transferência discreta.

Propriedades de efeito

Observação

Os valores de todos os canais das propriedades de transferência discretas são sem unidade e têm um mínimo de 0,0 e um máximo de 1,0.

Nome de exibição e enumeração de índice Tipo e valor padrão Descrição
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{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
FALSE
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 Vermelho.
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
A lista de valores que definem a função de transferência para o canal Verde.
GreenDisable
D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE
BOOL
FALSE
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 Verde.
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{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
FALSE
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 Azul.
AlphaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
A lista de valores que definem a função de transferência para o canal Alfa.
AlphaDisable
D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE
BOOL
FALSE
Se você definir isso como TRUE, o efeito não aplicará a função de transferência ao canal Alfa. Se você definir isso como FALSE, o efeito aplicará a função AlphaDiscreteTransfer ao canal Alfa.
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSE
Se o efeito fixa valores de cor entre 0 e 1 antes que o efeito passe os valores para o próximo efeito no grafo. O efeito fixa os valores antes de pré-multiplicar o alfa.
Se você definir isso como TRUE, o efeito fixará 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 fixar os valores se eles não forem de precisão alta o suficiente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Servidor mínimo com suporte Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect