Lineární přenosový efekt
Pomocí lineárního přenosového efektu můžete mapovat intenzity barev obrázku pomocí lineární funkce vytvořené ze seznamu hodnot, které zadáte pro každý kanál.
CLSID pro tento efekt je CLSID_D2D1LinearTransfer.
Příklad obrázku
Před |
---|
![]() |
Po |
![]() |
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);
linearTransferEffect->SetInput(0, bitmap);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(linearTransferEffect.Get());
m_d2dContext->EndDraw();
Funkce lineárního přenosu se vytvoří na základě sklonu a průsečíku y pro každý zadaný kanál. Intenzita výstupních pixelů C se vypočítá rovnicí: C' = mC + B, kde m je sklon lineární funkce a B je průsečík Y lineární funkce.
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í lineárního přenosu:
- Průsečík Y není ohraničený a je bez jednotný.
- Sklon není ohraničený a je bez jednotkové.
Zobrazovaný název a výčet indexu | Typ a výchozí hodnota | Popis |
---|---|---|
RedYIntercept D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT |
PLOUT 0.0f |
Průsečík Y lineární funkce pro červený kanál. |
RedSlope D2D1_LINEARTRANSFER_PROP_RED_SLOPE |
PLOUT 1.0f |
Sklon lineární funkce pro červený kanál. |
RedDisable D2D1_LINEARTRANSFER_PROP_RED_DISABLE |
BOOL FALEŠNÝ |
Pokud nastavíte hodnotu TRUE, efekt nepoužije funkci přenosu na červený kanál. Pokud nastavíte hodnotu NEPRAVDA, efekt použije funkci RedLinearTransfer na kanál Red. |
GreenyIntercept D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT |
PLOUT 0.0f |
Průsečík Y lineární funkce pro zelený kanál. |
GreenSlope D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE |
PLOUT 1.0f |
Sklon lineární funkce pro zelený kanál. |
GreenDisable D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE |
BOOL FALEŠNÝ |
Pokud nastavíte hodnotu PRAVDA, efekt nepoužije funkci přenosu na zelený kanál. Pokud nastavíte hodnotu FALSE, použije funkce GreenLinearTransfer na zelený kanál. |
BlueYIntercept D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT |
PLOUT 0.0f |
Průsečík Y lineární funkce pro modrý kanál. |
BlueSlope D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE |
PLOUT 1.0f |
Sklon lineární funkce pro modrý kanál. |
BlueDisable D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE |
BOOL FALEŠNÝ |
Pokud nastavíte hodnotu TRUE, efekt nepoužije funkci přenosu na modrý kanál. Pokud nastavíte hodnotu FALSE, použije funkce BlueLinearTransfer na modrý kanál. |
AlphayIntercept D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT |
PLOUT 0.0f |
Průsečík Y lineární funkce pro alfa kanál. |
AlfaSlope D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE |
PLOUT 0.0f |
Sklon lineární funkce pro alfa kanál. |
AlphaDisable D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE |
BOOL FALEŠNÝ |
Pokud nastavíte hodnotu PRAVDA, efekt nepoužije funkci přenosu na kanál Alpha. Pokud nastavíte hodnotu FALSE, použije funkce AlphaLinearTransfer na kanál Alpha. |
ClampOutput D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALEŠNÝ |
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. |
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 |