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 |
---|
![]() |
Após |
![]() |
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 |