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

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

Imagem de exemplo

Antes
a imagem antes do efeito.
After (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();

Esse 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 *Expoente C + Deslocamento

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

Propriedades de efeito

Observação

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

  • O valor de amplitude não é limitado e é sem unidade.
  • O valor do expoente não é limitado e é sem unidade.
  • O valor de deslocamento não é limitado e é sem unidade.
Nome de exibição e enumeração de índice Descrição
RedAmplitude
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.
RedOffset
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 ao canal Vermelho. Uma função de transferência de identidade é usada. 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.
GreenAmplitude
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.
GreenExponent
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.
GreenOffset
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.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Se você definir isso como TRUE, ele não aplicará a função de transferência ao canal Verde. Uma função de transferência de identidade é usada. 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.
BlueOffset
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 ao canal Azul. Uma função de transferência de identidade é usada. 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.
AlphaAmplitude
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.
AlphaExponent
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.
AlphaOffset
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. Uma função de transferência de identidade é usada. 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 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.
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.

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