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
- vlastnosti efektu
- režimy ohraničení
- režimy interpolace
- výstupní rastrový obrázek
- požadavky na
- související témata
Příklad obrázku
Před |
---|
![]() |
Po |
![]() |
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:
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 |