Partilhar via


Efeito de transferência linear

Use o efeito de transferência linear para mapear as intensidades de cor de uma imagem usando uma função linear criada a partir de uma lista de valores fornecidos para cada canal.

O CLSID para este efeito é CLSID_D2D1LinearTransfer.

Imagem de exemplo

Antes
a imagem antes do efeito.
Após
a imagem após a transformação.
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);

linearTransferEffect->SetInput(0, bitmap);

linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);

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

A função de transferência linear é criada com base na inclinação e y-intercept para cada canal que você especificar. A intensidade do pixel de saída C é calculada com a equação: C' = mC + B, onde m é a inclinação da função linear e B é o interceto Y da função linear.

Este efeito funciona em imagens alfa retas e pré-multiplicadas. O efeito produz bitmaps alfa pré-multiplicados.

Propriedades do efeito

Observação

Para todos os canais das propriedades de transferência linear:

  • A interceção Y não é limitada e não tem unidade.
  • A inclinação não é limitada e é sem unidade.
Nome para exibição e enumeração de índice Tipo e valor padrão Descrição
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
FLUTUAR
0,0 f
A interceção Y da função linear para o canal vermelho.
Inclinação Vermelha
D2D1_LINEARTRANSFER_PROP_RED_SLOPE
FLUTUAR
1.0f
A inclinação da função linear para o canal vermelho.
RedDisable
D2D1_LINEARTRANSFER_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 RedLinearTransfer ao canal Red.
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
FLUTUAR
0,0 f
A interceção em Y da função linear para o canal verde.
Encosta Verde
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
FLUTUAR
1.0f
A inclinação da função linear para o canal Verde.
GreenDesativar
D2D1_LINEARTRANSFER_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, ele aplicará a função GreenLinearTransfer ao canal Green.
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
FLUTUAR
0,0 f
A interceção Y da função linear para o canal azul.
Inclinação Azul
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE
FLUTUAR
1.0f
A inclinação da função linear para o canal azul.
BlueDisable
D2D1_LINEARTRANSFER_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, ele aplicará a função BlueLinearTransfer ao canal azul.
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT
FLUTUAR
0,0 f
O interceto Y da função linear para o canal Alpha.
Inclinação Alfa
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
FLUTUAR
0,0 f
A inclinação da função linear para o canal Alfa.
AlphaDisable
D2D1_LINEARTRANSFER_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 ele aplicará a função AlphaLinearTransfer para o canal Alpha.
ClampOutput
D2D1_LINEARTRANSFER_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

ID2D1Effect