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
- egenskaper för effekt
- 4x4 Transformera matrisklass
- Krav
- Relaterade ämnen
Exempelbild
Före |
---|
![]() |
Efter |
![]() |
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. ![]()
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. |
![]() |
SkewX(X) | Genererar en transformeringsmatris som förvränger projektionsplanet i X-riktningen. |
![]() |
Skewy(Y) | Genererar en transformeringsmatris som förvränger projektionsplanet i Y-riktningen. |
![]() |
Översättning(X, Y, Z) | Genererar en transformeringsmatris som översätter projektionsplanet i X-, Y- eller Z-riktningen. |
![]() |
RotationX(X) | Genererar en transformeringsmatris som roterar projektionsplanet om X-axeln. |
![]() |
RotationY(Y) | Genererar en transformeringsmatris som roterar projektionsplanet om Y-axeln. |
![]() |
RotationZ(Z) | Genererar en transformeringsmatris som roterar projektionsplanet om Z-axeln. |
![]() |
PerspectiveProjection(D) | En perspektivtransformering med djupvärdet D. |
![]() |
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 |