Partilhar via


Efeito de transferência gama

Use o efeito de transferência gama para mapear as intensidades de cor de uma imagem usando uma função gama criada usando uma amplitude, expoente e deslocamento fornecidos para cada canal.

O CLSID para este efeito é CLSID_D2D1GammaTransfer. Para usar esse efeito, adicione dxguid.lib às dependências do vinculador.

Imagem de exemplo

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

gammaTransferEffect->SetInput(0, bitmap);

gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);

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

Este efeito aplica uma função de transferência gama com base na equação aqui.

A intensidade do pixel de entrada é representada como C e a intensidade do pixel de saída como C'. C' = Amplitude * CExpoente + Deslocamento

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 gama:

  • O valor da amplitude não é limitado e não tem unidade.
  • O valor do expoente não é limitado e é sem unidade.
  • O valor de deslocamento não é limitado e é sem unidade.
Nome para exibição e enumeração de índice Descrição
Amplitude Vermelha
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
A amplitude da função de transferência gama para o canal vermelho. O tipo é FLOAT.
O valor padrão é 1.0f.
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
O expoente da função de transferência gama para o canal vermelho. O tipo é FLOAT.
O valor padrão é 1.0f.
Deslocamento Vermelho
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
O deslocamento da função de transferência gama para o canal vermelho. O tipo é FLOAT.
O valor padrão é 0.0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Se você definir isso como TRUE, ele não aplicará a função de transferência para o canal vermelho. É utilizada uma função de transferência de identidade. Se você definir isso como FALSE, ele aplicará a função de transferência gama ao canal vermelho. O tipo é BOOL.
O valor padrão é FALSE.
Amplitude Verde
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
A amplitude da função de transferência gama para o canal verde. O tipo é FLOAT.
O valor padrão é 1.0f.
Expoente Verde
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
O expoente da função de transferência gama para o canal verde. O tipo é FLOAT.
O valor padrão é 1.0f.
Deslocamento Verde
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
O deslocamento da função de transferência gama para o canal verde. O tipo é FLOAT.
O valor padrão é 0.0f.
GreenDesativar
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Se você definir isso como TRUE, ele não aplicará a função de transferência para o canal verde. É utilizada uma função de transferência de identidade. Se você definir isso como FALSE, ele aplicará a função de transferência gama ao canal verde. O tipo é BOOL.
O valor padrão é FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
A amplitude da função de transferência gama para o canal azul. O tipo é FLOAT.
O valor padrão é 1.0f.
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
O expoente da função de transferência gama para o canal azul. O tipo é FLOAT.
O valor padrão é 1.0f.
Deslocamento azul
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
O deslocamento da função de transferência gama para o canal azul. O tipo é FLOAT.
O valor padrão é 0.0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Se você definir isso como TRUE, ele não aplicará a função de transferência para o canal azul. É utilizada uma função de transferência de identidade. Se você definir isso como FALSE, ele aplicará a função de transferência gama ao canal azul. O tipo é BOOL.
O valor padrão é FALSE.
AlfaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
A amplitude da função de transferência gama para o canal alfa. O tipo é FLOAT.
O valor padrão é 1.0f.
Expoente Alfa
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
O expoente da função de transferência gama para o canal alfa. O tipo é FLOAT.
O valor padrão é 1.0f.
AlfaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
O deslocamento da função de transferência gama para o canal alfa. O tipo é FLOAT.
O valor padrão é 0.0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Se você definir isso como TRUE, ele não aplicará a função de transferência ao canal alfa. É utilizada uma função de transferência de identidade. Se você definir isso como FALSE, ele aplicará a função de transferência gama ao canal alfa. O tipo é BOOL.
O valor padrão é FALSE.
ClampOutput
D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT
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.
O tipo é BOOL.
O valor padrão é FALSE.

Bitmap de saída

O tamanho do bitmap de saída é o mesmo que o tamanho do bitmap de entrada.

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