Sdílet prostřednictvím


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

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

ID2D1Effect