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
- eigenschappen van effect
- 4x4-transformatiematrixklasse
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
Voor |
---|
![]() |
Na |
![]() |
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. ![]()
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. |
![]() |
Scheeftrekken(X) | Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak in de X-richting wordt scheefgetrokken. |
![]() |
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. |
![]() |
RotationX(X) | Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de X-as wordt gedraaid. |
![]() |
Draaiing (Y) | Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de Y-as wordt gedraaid. |
![]() |
RotationZ(Z) | Hiermee wordt een transformatiematrix gegenereerd waarmee het projectievlak over de Z-as wordt gedraaid. |
![]() |
PerspectiveProjection(D) | Een perspectieftransformatie met een dieptewaarde van D. |
![]() |
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 |