3D perspektivní transformační efekt
Pomocí efektu transformace perspektivy 3D otočte obrázek o 3 rozměry, jako by byl zobrazen z vzdálenosti.
Transformace 3D perspektivy je pohodlnější než efekt 3D transformace, ale zpřístupňuje pouze podmnožinu funkcí. Můžete vypočítat úplnou 3D transformační matici a použít na obrázek libovolnou transformační matici pomocí 3D transformace efekt.
CLSID pro tento efekt je CLSID_D2D13DPerspectiveTransform.
- příklad obrázku
- vlastnosti efektu
- režimy interpolace
- režimy ohraničení
- výstupní rastrový obrázek
- požadavky na
- související témata
Příklad obrázku
Před |
---|
![]() |
Po |
![]() |
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);
perspectiveTransformEffect->SetInput(0, bitmap);
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Popis |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE |
Režim interpolace, který efekt používá na obrázku. Existuje 5 režimů škálování, které jsou v rozsahu kvality a rychlosti. Typ je D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. Výchozí hodnota je D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_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. |
Hloubka D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Vzdálenost od PerspectiveOrigin k rovině projekce. Hodnota zadaná v sadě DIP a musí být větší než 0. Typ je FLOAT. Výchozí hodnota je 1000.0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Umístění X a Y prohlížeče ve 3D scéně. Tato vlastnost je D2D1_VECTOR_2F definována takto: (bod X, bod Y). Jednotky jsou v jednotkách DIP. Hodnotu Z nastavíte pomocí vlastnosti Depth. Typ je D2D1_VECTOR_2F. Výchozí hodnota je {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Překlad efektu provede před otočením roviny projekce. Tato vlastnost je D2D1_VECTOR_3F definována takto: (X, Y, Z). Jednotky jsou v jednotkách DIP. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Překlad, který efekt provede po otočení roviny projekce. Tato vlastnost je D2D1_VECTOR_3F definována takto: (X, Y, Z). Jednotky jsou v jednotkách DIP. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
Středový bod otočení efekt provede. Tato vlastnost je D2D1_VECTOR_3F definována takto: (X, Y, Z). Jednotky jsou v jednotkách DIP. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {0.0f, 0.0f, 0.0f}. |
Rotace D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Úhly otočení pro každou osu. Tato vlastnost je D2D1_VECTOR_3F definována takto: (X, Y, Z). Jednotky jsou ve stupních. Typ je D2D1_VECTOR_3F. Výchozí hodnota je {0.0f, 0.0f, 0.0f}. |
Režimy interpolace
Výčet | Popis |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku. |
Poznámka
Pokud režim nevyberete, efekt se ve výchozím nastavení D2D1_3DPERSPECTIVETRANSFORM_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.
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. |
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 |