Dela via


3D-transformeringseffekt

Använd 3D-transformeringseffekten för att tillämpa en godtycklig 4x4-transformeringsmatris på en bild.

Den här effekten tillämpar matrisen (M?) som du anger för hörnhörn i källbilden ([ x y z 1 ]) med den här beräkningen:

[ xr yr zr 1 ]=[ x y z 1 ]*M?

CLSID för den här effekten är CLSID_D2D13DTransform.

Exempelbild

Före
bilden före transformering.
Efter
bilden efter transformen.
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();

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
InterpolationMode
D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE
Interpoleringsläget som effekten använder på bilden. Det finns 5 skalningslägen som varierar i kvalitet och hastighet.
Typen är D2D1_3DTRANSFORM_INTERPOLATION_MODE.
Standardvärdet är D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DTRANSFORM_PROP_BORDER_MODE
Det läge som används för att beräkna bildens kantlinje, mjuk eller hård. Mer information finns i kantlinjelägen.
Typen är D2D1_BORDER_MODE.
Standardvärdet är D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX
En 4x4-transformeringsmatris som tillämpas på projektionsplanet. Följande matrisberäkning används för att mappa punkter från ett 3D-koordinatsystem till det transformerade 2D-koordinatsystemet.
3D-djupmatris var:
X, Y, Z = Koordinater för indataprojektionsplan
Mx,y = transformeringsmatriselement
X , Y , Z =Utdataprojektionsplankoordinater

De enskilda matriselementen är inte avgränsade och är enhetslösa.
Typen är D2D1_MATRIX_4X4_F.
Standardvärdet är Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1).

Interpoleringslägen

Uppräkning Beskrivning
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Exempel på den närmaste enskilda punkten och använder den. I det här läget används mindre bearbetningstid, men den lägsta kvalitetsbilden matas ut.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR Använder ett fyrpunktsexempel och linjär interpolation. Det här läget använder mer bearbetningstid än närmaste grannläge, men ger en bild av högre kvalitet.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC Använder en 16-exempelkubik kernel för interpolering. Det här läget använder mest bearbetningstid, men ger en bild av högre kvalitet.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Använder 4 linjära exempel inom en enda pixel för bra kantutjämning. Det här läget är bra för att skala ned med små mängder på bilder med några bildpunkter.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Använder anisotropisk filtrering för att prova ett mönster enligt bitmappens transformerade form.

Not

Om du inte väljer ett läge är effekten standard för D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.

Not

Anisotropt läge genererar mipmaps vid skalning, men om du anger egenskapen Cached till true för de effekter som indata till den här effekten, genereras inte mipmaps varje gång för tillräckligt små bilder.

Kantlinjelägen

Namn Beskrivning
D2D1_BORDER_MODE_SOFT Effekten fyller bilden med transparenta svarta bildpunkter när den interpoleras, vilket resulterar i en mjuk kant.
D2D1_BORDER_MODE_HARD Effekten klämmer utdata till indatabildens storlek.

4x4 Transformera matrisklass

Direct2D tillhandahåller en 4x4-matrisklass för att tillhandahålla hjälpfunktioner för att transformera bilden i tre dimensioner. Mer information och en beskrivning av alla klassmedlemmar finns i avsnittet Matrix4x4F.

Funktion Beskrivning Matris
Matrix4x4F::Scale(X, Y, Z) Genererar en transformeringsmatris som skalar projektionsplanet i riktningen X, Y och/eller Z. scale3d-matris
SkewX(X) Genererar en transformeringsmatris som förvränger projektionsplanet i X-riktningen. Visar en skev matris i X-riktningen.
Skewy(Y) Genererar en transformeringsmatris som förvränger projektionsplanet i Y-riktningen. skev matris
Översättning(X, Y, Z) Genererar en transformeringsmatris som översätter projektionsplanet i X-, Y- eller Z-riktningen. översätta matrisen
RotationX(X) Genererar en transformeringsmatris som roterar projektionsplanet om X-axeln. rotera x matris
RotationY(Y) Genererar en transformeringsmatris som roterar projektionsplanet om Y-axeln. rotera y-matrisen
RotationZ(Z) Genererar en transformeringsmatris som roterar projektionsplanet om Z-axeln. rotera z-matrisen
PerspectiveProjection(D) En perspektivtransformering med djupvärdet D. perspektivmatris
RotationArbitraryAxis(X, Y, Z, grader) Roterar projektionsplanet om den axel som du anger.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect