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
- eigenschappen van effect
- interpolatiemodi
- randmodi
- uitvoer bitmap
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
Voor |
---|
![]() |
Na |
![]() |
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 |