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 |
---|
After (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();
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 |