Sdílet prostřednictvím


2D affine transformační efekt

2D efekt transformace použije prostorovou transformaci na obrázek založený na matici 3X2 pomocí matice Direct2D transformace a libovolného ze šesti režimů interpolace. Tento efekt můžete použít k otočení, škálování, nerovnoměrné distribuci nebo překladu obrázku. Nebo můžete tyto operace kombinovat. Affine přenosy zachovávají paralelní čáry a poměr vzdáleností mezi všemi třemi body na obrázku.

CLSID pro tento efekt je CLSID_D2D12DAffineTransform.

Příklad obrázku

Před
obrázek před efektem.
Po
obrázek po transformaci.
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();

Tento efekt provede tuto maticovou operaci:

operace matice

I když je vstupní matice definována jako matice 3x2, poslední sloupec je vycpaný 0, 0 a 1 pro vytvoření čtvercové matice. To umožňuje násobení matic, aby transformace mohly být zřetězeny do jedné matice.

Vlastnosti efektu

Zobrazovaný název a výčet indexu Popis
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
Interpolační režim použitý ke škálování obrázku. Existuje 6 režimů škálování, které jsou v rozsahu kvality a rychlosti.
Typ je D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE.
Výchozí hodnota je D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE
Režim použitý k výpočtu ohraničení obrázku, měkkého nebo pevného. Další informace najdete v režimech ohraničení.
Typ je D2D1_BORDER_MODE.
Výchozí hodnota je D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
Matice 3x2 pro transformaci obrázku pomocí matice Direct2D transformace.
Typ je D2D1_MATRIX_3X2_F.
Výchozí hodnota je Matrix3x2F::Identity().
Bystrost
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
Ve vysoce kvalitním režimu krychlové interpolace je úroveň ostrosti filtru měřítka plovoucí mezi 0 a 1. Hodnoty jsou bez jednotkové. Pomocí ostrosti můžete upravit kvalitu obrázku při škálování obrázku.
Faktor ostrosti ovlivňuje tvar jádra. Čím vyšší je faktor ostrosti, tím menší jádro.
Poznámka: Tato vlastnost má vliv pouze na režim interpolace s vysokou kvalitou.
Typ je FLOAT.
Výchozí hodnota je 0,0f.

Režimy ohraničení

Jméno Popis
D2D1_BORDER_MODE_SOFT Efekt vloží obrázek s průhlednými černými pixely při interpolaci, což vede k měkkému okraji.
D2D1_BORDER_MODE_HARD Efekt uchytá výstup na velikost vstupního obrázku.

Režimy interpolace

Výčet Popis
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Vzorkuje nejbližší jeden bod a použije ho. Tento režim používá méně času zpracování, ale vypíše nejnižší kvalitu obrázku.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR Používá čtyřbodový vzorek a lineární interpolaci. Tento režim používá více času zpracování než režim nejbližšího souseda, ale vypíše image s vyšší kvalitou.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC Pro interpolaci se používá 16 vzorové krychlové jádro. Tento režim používá nejvíce času zpracování, ale výstupy image s vyšší kvalitou.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Používá 4 lineární vzorky v jednom pixelu pro dobrý anti-aliasing okrajů. Tento režim je vhodný pro vertikální snížení kapacity o malé množství na obrázcích s několika pixely.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Pomocí proměnné velikosti vysoce kvalitního krychlového jádra provede obrázek před snížením kapacity, pokud je snížení kapacity zapojeno do transformační matice. Pak použije režim krychlové interpolace pro konečný výstup.

Poznámka

Pokud režim nevyberete, efekt se ve výchozím nastavení D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.

Poznámka

Anisotropní režim generuje mipmapy při škálování, ale pokud nastavíte Cached vlastnost true na efekty, které jsou vstupy do tohoto efektu, mipmapy nebudou generovány pokaždé, když pro dostatečně malé obrázky.

Výstupní rastrový obrázek

Velikost výstupního rastrového obrázku závisí na matici transformace použité na obrázku.

Efekt provede operaci transformace a pak kolem výsledku použije ohraničující rámeček. Výstupní rastrový obrázek je velikost ohraničujícího rámečku.

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