Sdílet prostřednictvím


Efekt gama přenosu

Pomocí efektu gama přenosu můžete mapovat intenzity barev obrázku pomocí funkce gama vytvořené pomocí amplitudy, exponentu a posunu, které zadáte pro každý kanál.

CLSID pro tento efekt je CLSID_D2D1GammaTransfer. Chcete-li použít tento efekt, přidejte dxguid.lib do závislostí linkeru.

Příklad obrázku

Před
obrázek před efektem.
Po
obrázek po transformaci.
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();

Tento efekt použije funkci gama přenosu na základě rovnice zde.

Intenzita vstupních pixelů je reprezentována jako C a intenzita výstupních pixelů jako C'. C' = Amplituda * CExponent + Offset

Tento efekt funguje na rovných a předsledovaných alfa obrázcích. Efekt vypíše předem nastavené alfa rastrové obrázky.

Vlastnosti efektu

Poznámka

Pro všechny kanály vlastností gama přenosu:

  • Hodnota amplitudy není ohraničená a je bez jednotná.
  • Exponent hodnota není ohraničená a je bez jednotná.
  • Hodnota posunu není ohraničená a je bez jednotná.
Zobrazovaný název a výčet indexu Popis
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Amplituda funkce přenosu gama pro červený kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Exponent funkce přenosu gama pro červený kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Posun funkce přenosu gama pro červený kanál. Typ je FLOAT.
Výchozí hodnota je 0,0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Pokud nastavíte hodnotu PRAVDA, nepoužije se funkce přenosu na červený kanál. Používá se funkce přenosu identity. Pokud nastavíte hodnotu NEPRAVDA, použije se funkce přenosu gama na červený kanál. Typ je BOOL.
Výchozí hodnota je FALSE.
GreenAmplitude
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
Amplituda funkce gama přenosu pro zelený kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
GreenExponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
Exponent funkce přenosu gama pro zelený kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
Posun funkce gama přenosu pro zelený kanál. Typ je FLOAT.
Výchozí hodnota je 0,0f.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Pokud nastavíte hodnotu PRAVDA, nepoužije se funkce přenosu na zelený kanál. Používá se funkce přenosu identity. Pokud nastavíte hodnotu NEPRAVDA, použije se funkce přenosu gama na zelený kanál. Typ je BOOL.
Výchozí hodnota je FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Amplituda funkce gama přenosu pro modrý kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Exponent funkce gama přenosu pro modrý kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Posun funkce přenosu gama pro modrý kanál. Typ je FLOAT.
Výchozí hodnota je 0,0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Pokud nastavíte hodnotu PRAVDA, nepoužije se funkce přenosu na modrý kanál. Používá se funkce přenosu identity. Pokud nastavíte hodnotu NEPRAVDA, použije se funkce přenosu gama na modrý kanál. Typ je BOOL.
Výchozí hodnota je FALSE.
AlfaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Amplituda funkce přenosu gama pro alfa kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
AlphaExponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Exponent funkce přenosu gama pro alfa kanál. Typ je FLOAT.
Výchozí hodnota je 1,0f.
AlfaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
Posun funkce přenosu gama pro alfa kanál. Typ je FLOAT.
Výchozí hodnota je 0,0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Pokud nastavíte hodnotu PRAVDA, nepoužije se funkce přenosu na alfa kanál. Používá se funkce přenosu identity. Pokud nastavíte hodnotu NEPRAVDA, použije se funkce přenosu gama na alfa kanál. Typ je BOOL.
Výchozí hodnota je FALSE.
ClampOutput
D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT
Určuje, zda efekt upne hodnoty barev mezi 0 a 1 před tím, než efekt předá hodnoty dalšímu efektu v grafu. Efekt uchytí hodnoty před tím, než premultipluje alfa .
Pokud nastavíte hodnotu TRUE, efekt uchytne hodnoty. Pokud nastavíte hodnotu NEPRAVDA, efekt neuchytne hodnoty barev, ale jiné efekty a výstupní povrch mohou upnout hodnoty, pokud nejsou dostatečně vysoké přesnosti.
Typ je BOOL.
Výchozí hodnota je FALSE.

Výstupní rastrový obrázek

Velikost výstupního rastrového obrázku je stejná jako velikost vstupního rastrového obrázku.

Požadavky

Požadavek Hodnota
Minimální podporovaný klient Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Minimální podporovaný server Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Záhlaví d2d1effects.h
Knihovna d2d1.lib, dxguid.lib

ID2D1Effect