Térhatású átalakítási effektus
A 3D átalakítási effektus használatával tetszőleges 4x4-et átalakító mátrixot alkalmazhat egy képre.
Ez az effektus a forráskép sarokcsúcsaira ([ x y z 1 ]) megadott mátrixot (M?) alkalmazza a következő számítással:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
Az effektus CLSID azonosítója CLSID_D2D13DTransform.
Példakép
Előtt |
---|
![]() |
Után |
![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Effektus tulajdonságai
Név és index számbavételének megjelenítése | Leírás |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Az interpolációs mód, amelyet az effektus a képre használ. 5 skálázási mód létezik, amelyek minőségben és sebességben is skálázhatók. A típus D2D1_3DTRANSFORM_INTERPOLATION_MODE. Az alapértelmezett érték D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
A kép szegélyének kiszámítására használt mód, puha vagy kemény. További információért tekintse meg szegélymódokat. A típus D2D1_BORDER_MODE. Az alapértelmezett érték D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
A vetítési síkra alkalmazott 4x4 transzformációs mátrix. Az alábbi mátrixszámítás egy 3D koordinátarendszer pontjainak leképezésére szolgál az átalakított 2D koordinátarendszerre. ![]()
Mx,y = Mátrixelemek átalakítása X, Y, Z =Kimeneti vetítési sík koordinátái Az egyes mátrixelemek nincsenek határban, és egység nélküliek. A típus D2D1_MATRIX_4X4_F. Az alapértelmezett érték a Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1). |
Interpolációs módok
Felsorolás | Leírás |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Mintákat a legközelebbi egy pontot, és használja azt. Ez a mód kevesebb feldolgozási időt használ, de a legalacsonyabb minőségű képet adja ki. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Négypontos mintát és lineáris interpolációt használ. Ez a mód több feldolgozási időt használ, mint a legközelebbi szomszéd mód, de jobb minőségű képet ad ki. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | 16 köbélmintát használ az interpolációhoz. Ez a mód a legtöbb feldolgozási időt használja, de jobb minőségű képet ad ki. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Egyetlen képponton belül 4 lineáris mintát használ a jó élelsimításhoz. Ez a mód alkalmas arra, hogy kis mennyiségekkel lefelé skálázható néhány képpontos képeken. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Anizotróp szűréssel mintát vesz a bitkép átalakított alakjának megfelelően. |
Jegyzet
Ha nem jelöl ki módot, az effektus alapértelmezés szerint D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
Jegyzet
Az anizotróp mód mipmap-okat hoz létre a skálázás során, azonban ha a Gyorsítótárazott tulajdonságot igaz értékre állítja az effektusba bemenő hatásokra, a mipmapok nem jönnek létre minden alkalommal a megfelelő méretű képekhez.
Szegélymódok
Név | Leírás |
---|---|
D2D1_BORDER_MODE_SOFT | Az effektus az interpoláció során átlátszó fekete képpontokkal párnázta meg a képet, ami puha élhez vezet. |
D2D1_BORDER_MODE_HARD | Az effektus a kimenetet a bemeneti kép méretéhez rögzíti. |
4x4 transzformációs mátrixosztály
A Direct2D egy 4x4 mátrixosztályt biztosít, amely segédfüggvényeket biztosít a kép 3 dimenzióban történő átalakításához. További információért és az osztálytagok leírásáért tekintse meg a Matrix4x4F témakört.
Funkció | Leírás | Mátrix |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Létrehoz egy transzformációs mátrixot, amely az X, Y és/vagy Z irányban skálázza a vetítési síkot. |
![]() |
SkewX(X) | Létrehoz egy átalakító mátrixot, amely az X irányban elvarrja a vetítési síkot. |
![]() |
SkewY(Y) | Létrehoz egy átalakító mátrixot, amely az Y irányban elvarrja a vetítési síkot. |
![]() |
Fordítás(X, Y, Z) | Létrehoz egy transzformációs mátrixot, amely az X, Y vagy Z irányban fordítja le a vetítési síkot. | mátrixfordítása |
RotációsX(X) | Létrehoz egy transzformációs mátrixot, amely az X tengely körül elforgatja a vetítési síkot. |
![]() |
Forgatás(Y) | Létrehoz egy átalakítómátrixot, amely az Y tengely körül elforgatja a vetítési síkot. |
![]() |
RotációZ(Z) | Létrehoz egy átalakító mátrixot, amely elforgatja a vetítési síkot a Z tengely körül. |
![]() |
PerspectiveProjection(D) | Perspektíva-átalakítás D mélységi értékkel. |
![]() |
RotationArbitraryAxis(X, Y, Z, fok) | Elforgatja a vetítési síkot a megadott tengely körül. |
Követelmények
Követelmény | Érték |
---|---|
Minimálisan támogatott ügyfél | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Minimálisan támogatott kiszolgáló | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Fejléc | d2d1effects.h |
Könyvtár | d2d1.lib, dxguid.lib |