Sdílet prostřednictvím


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

ID2D1Effect