Delen via


Transformatieeffect van 3D-perspectief

Gebruik het transformatieeffect van het 3D-perspectief om de afbeelding in drie dimensies te draaien alsof ze vanaf een afstand worden bekeken.

De 3D-perspectieftransformatie is handiger dan het 3D-transformatieeffect, maar toont alleen een subset van de functionaliteit. U kunt een volledige 3D-transformatiematrix berekenen en een meer willekeurige transformatiematrix toepassen op een afbeelding met behulp van de 3D-transformatie effect.

De CLSID voor dit effect is CLSID_D2D13DPerspectiveTransform.

Voorbeeldafbeelding

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

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
InterpolationMode
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE.
De standaardwaarde is D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DPERSPECTIVETRANSFORM_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.
Diepte
D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH
De afstand van de PerspectiveOrigin naar het projectievlak. De waarde die is opgegeven in DIPs en moet groter zijn dan 0.
Type is FLOAT.
De standaardwaarde is 1000,0f.
PerspectiveOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN
De X- en Y-locatie van de kijker in de 3D-scène. Deze eigenschap is een D2D1_VECTOR_2F gedefinieerd als: (punt X, punt Y). De eenheden bevinden zich in DIPs.
U stelt de Z-waarde in met de eigenschap Depth.
Type is D2D1_VECTOR_2F.
De standaardwaarde is {0.0f, 0.0f}.
LocalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET
Een vertaling die het effect uitvoert voordat het projectievlak wordt gedraaid. Deze eigenschap is een D2D1_VECTOR_3F gedefinieerd als: (X, Y, Z). De eenheden bevinden zich in DIPs.
Type is D2D1_VECTOR_3F.
De standaardwaarde is {0.0f, 0.0f, 0.0f}.
GlobalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET
Een vertaling die het effect uitvoert nadat het projectievlak is gedraaid. Deze eigenschap is een D2D1_VECTOR_3F gedefinieerd als: (X, Y, Z). De eenheden bevinden zich in DIPs.
Type is D2D1_VECTOR_3F.
De standaardwaarde is {0.0f, 0.0f, 0.0f}.
RotationOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN
Het middelpunt van de draaiing voert het effect uit. Deze eigenschap is een D2D1_VECTOR_3F gedefinieerd als: (X, Y, Z). De eenheden bevinden zich in DIPs.
Type is D2D1_VECTOR_3F.
De standaardwaarde is {0.0f, 0.0f, 0.0f}.
Rotatie
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION
De draaihoeken voor elke as. Deze eigenschap is een D2D1_VECTOR_3F gedefinieerd als: (X, Y, Z). De eenheden bevinden zich in graden.
Type is D2D1_VECTOR_3F.
De standaardwaarde is {0.0f, 0.0f, 0.0f}.

Interpolatiemodi

Opsomming Beschrijving
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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.

Uitvoer bitmap

De grootte van de uitvoer bitmap is afhankelijk van de transformatiematrix die op de afbeelding wordt toegepast.

Het effect voert de transformatiebewerking uit en past vervolgens een begrenzingsvak rond het resultaat toe. De uitvoer bitmap is de grootte van het begrenzingsvak.

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-