Dela via


Transformeringseffekt för 3D-perspektiv

Använd 3D-perspektivtransformeringseffekten för att rotera bilden i tre dimensioner som om den visas på avstånd.

3D-perspektivtransformering är bekvämare än 3D-transformeringseffekten, men exponerar bara en delmängd av funktionerna. Du kan beräkna en fullständig 3D-transformeringsmatris och tillämpa en mer godtycklig transformeringsmatris på en bild med hjälp av 3D-transformering effekt.

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

Exempelbild

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

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
InterpolationMode
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE.
Standardvärdet är D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DPERSPECTIVETRANSFORM_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.
Djup
D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH
Avståndet från PerspectiveOrigin till projektionsplanet. Värdet som anges i DIP:er och måste vara större än 0.
Typen är FLOAT.
Standardvärdet är 1000.0f.
PerspectiveOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN
X- och Y-platsen för visningsprogrammet i 3D-scenen. Den här egenskapen är en D2D1_VECTOR_2F definierad som: (punkt X, punkt Y). Enheterna finns i DIP:er.
Du anger Z-värdet med egenskapen Depth.
Typen är D2D1_VECTOR_2F.
Standardvärdet är {0.0f, 0.0f}.
LocalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET
En översättning som effekten utför innan den roterar projektionsplanet. Den här egenskapen är en D2D1_VECTOR_3F definierad som: (X, Y, Z). Enheterna finns i DIP:er.
Typen är D2D1_VECTOR_3F.
Standardvärdet är {0.0f, 0.0f, 0.0f}.
GlobalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET
En översättning som effekten utför när den roterar projektionsplanet. Den här egenskapen är en D2D1_VECTOR_3F definierad som: (X, Y, Z). Enheterna finns i DIP:er.
Typen är D2D1_VECTOR_3F.
Standardvärdet är {0.0f, 0.0f, 0.0f}.
RotationOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN
Rotationens mittpunkt som effekten utför. Den här egenskapen är en D2D1_VECTOR_3F definierad som: (X, Y, Z). Enheterna finns i DIP:er.
Typen är D2D1_VECTOR_3F.
Standardvärdet är {0.0f, 0.0f, 0.0f}.
Rotation
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION
Rotationsvinklarna för varje axel. Den här egenskapen är en D2D1_VECTOR_3F definierad som: (X, Y, Z). Enheterna är i grader.
Typen är D2D1_VECTOR_3F.
Standardvärdet är {0.0f, 0.0f, 0.0f}.

Interpoleringslägen

Uppräkning Beskrivning
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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 kommer effekten som standard att D2D1_3DPERSPECTIVETRANSFORM_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.

Utdatabitmapp

Storleken på utdatabitmappen beror på transformeringsmatrisen som tillämpas på bilden.

Effekten utför transformeringsåtgärden och tillämpar sedan en avgränsningsruta runt resultatet. Utdatabitmappen är storleken på avgränsningsrutan.

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