Compartilhar 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 que você fornece para cada canal.

O CLSID para esse efeito é CLSID_D2D1LinearTransfer.

Imagem de exemplo

Antes
a imagem antes do efeito.
Depois
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 interceptação y 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 é a interceptação Y da função linear.

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

Propriedades de efeito

Nota

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

  • A interceptação Y não está limitada e está sem unidade.
  • A inclinação não está limitada e está sem unidade.
Nome de exibição e enumeração de índice Tipo e valor padrão Descrição
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
FLUTUAR
0,0f
A interceptação Y da função linear para o canal Vermelho.
RedSlope
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 Vermelho.
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
FLUTUAR
0,0f
A interceptação Y da função linear para o canal Verde.
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
FLUTUAR
1,0f
A inclinação da função linear para o canal Verde.
GreenDisable
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 Verde.
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
FLUTUAR
0,0f
A interceptação Y da função linear para o canal Azul.
BlueSlope
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,0f
A interceptação Y da função linear para o canal Alfa.
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
FLUTUAR
0,0f
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 ao canal Alfa. Se você definir isso como FALSE, ele aplicará a função AlphaLinearTransfer ao canal Alfa.
ClampOutput
D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSO
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 que ele premultiplie 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 Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Servidor mínimo com suporte Windows 8 e Platform Update para Windows 7 [aplicativos da área de trabalho | Aplicativos da Windows Store]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect