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 |
---|
![]() |
Po |
![]() |
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 |