Delen via


3D-transformatieeffect

Gebruik het 3D-transformatieeffect om een willekeurige 4x4-transformatiematrix toe te passen op een afbeelding.

Met dit effect wordt de matrix (M?) toegepast die u opgeeft op de hoekpunten van de bronafbeelding ([ x y z 1 ]) met behulp van deze berekening:

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

De CLSID voor dit effect is CLSID_D2D13DTransform.

Voorbeeldafbeelding

Voor
de afbeelding vóór de transformatie.
Na
de afbeelding na de transformatie.
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();

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
InterpolationMode
D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE
De interpolatiemodus die het effect op de afbeelding gebruikt. Er zijn 5 schaalmodi die variëren in kwaliteit en snelheid.
Type is D2D1_3DTRANSFORM_INTERPOLATION_MODE.
De standaardwaarde is D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DTRANSFORM_PROP_BORDER_MODE
De modus die wordt gebruikt voor het berekenen van de rand van de afbeelding, zacht of hard. Zie Randmodi voor meer informatie.
Type is D2D1_BORDER_MODE.
De standaardwaarde is D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX
Een transformatiematrix van 4x4 die is toegepast op het projectievlak. De volgende matrixberekening wordt gebruikt om punten van één 3D-coördinaatsysteem toe te wijzen aan het getransformeerde 2D-coördinaatsysteem.
3D Depth Matrix Where:
X, Y, Z = Coördinaten van het invoerprojectievlak
Mx,y = Matrixelementen transformeren
X, Y, Z =Coördinaten van het uitvoerprojectievlak

De afzonderlijke matrixelementen zijn niet gebonden en zijn unitloos.
Type is D2D1_MATRIX_4X4_F.
De standaardwaarde is Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1).

Interpolatiemodi

Opsomming Beschrijving
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Steekt het dichtstbijzijnde single point in en gebruikt dat. In deze modus wordt minder verwerkingstijd gebruikt, maar wordt de afbeelding van de laagste kwaliteit uitgevoerd.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR Maakt gebruik van een voorbeeld van vier punten en lineaire interpolatie. In deze modus wordt meer verwerkingstijd gebruikt dan de dichtstbijzijnde buurmodus, maar wordt een afbeelding met een hogere kwaliteit uitgevoerd.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC Maakt gebruik van een 16 voorbeeldkubieke kernel voor interpolatie. In deze modus wordt de meeste verwerkingstijd gebruikt, maar wordt een afbeelding met een hogere kwaliteit uitgevoerd.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Maakt gebruik van vier lineaire steekproeven binnen één pixel voor goede rand antialiassen. Deze modus is geschikt voor het omlaag schalen met kleine hoeveelheden afbeeldingen met een paar pixels.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Maakt gebruik van anisotropische filtering om een patroon te steekproefen op basis van de getransformeerde vorm van de bitmap.

Notitie

Als u geen modus selecteert, wordt het effect standaard D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.

Notitie

De anisotropische modus genereert mipmaps bij het schalen, maar als u de eigenschap in cache instelt op true op de effecten die invoer voor dit effect zijn, worden de mipmaps niet telkens gegenereerd voor voldoende kleine afbeeldingen.

Randmodi

Naam Beschrijving
D2D1_BORDER_MODE_SOFT Het effect vult de afbeelding met transparante zwarte pixels terwijl deze interpoleert, wat resulteert in een zachte rand.
D2D1_BORDER_MODE_HARD Het effect klemt de uitvoer op de grootte van de invoerafbeelding.

Matrixklasse 4x4 transformeren

Direct2D biedt een matrixklasse van 4x4 om helperfuncties te bieden voor het transformeren van de afbeelding in 3 dimensies. Zie het onderwerp Matrix4x4F voor meer informatie en een beschrijving van alle klasleden.

Functie Beschrijving Matrix
Matrix4x4F::Scale(X, Y, Z) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak in de X-, Y- en/of Z-richting wordt geschaald. matrix schalen
Scheeftrekken(X) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak in de X-richting wordt scheefgetrokken. Geeft een scheeftrekkende matrix weer in de X-richting.
Scheefheid (Y) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak in de Y-richting wordt scheefgetrokken.
Translation(X, Y, Z) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak in de X-, Y- of Z-richting wordt omgezet. matrix vertalen
RotationX(X) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de X-as wordt gedraaid. x-matrix draaien
Draaiing (Y) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de Y-as wordt gedraaid. y-matrix draaien
RotationZ(Z) Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de Z-as wordt gedraaid. z-matrix draaien
PerspectiveProjection(D) Een perspectieftransformatie met een dieptewaarde van D. perspectiefmatrix
RotationArbitraryAxis(X, Y, Z, graden) Hiermee draait u het projectievlak over de as die u opgeeft.

Eisen

Eis Waarde
Minimaal ondersteunde client Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Minimaal ondersteunde server Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Rubriek d2d1effects.h
Bibliotheek d2d1.lib, dxguid.lib

ID2D1Effect-