Delen via


Effect van 2D-affinetransformatie

Het 2D-affinetransformatieeffect past een ruimtelijke transformatie toe op een afbeelding op basis van een 3X2-matrix met behulp van de Direct2D-matrix transformatie en een van de zes interpolatiemodi. U kunt dit effect gebruiken om een afbeelding te draaien, te schalen, scheef te maken of te vertalen. U kunt deze bewerkingen ook combineren. Affinusoverdrachten behouden parallelle lijnen en de verhouding van afstanden tussen drie punten in een afbeelding.

De CLSID voor dit effect is CLSID_D2D12DAffineTransform.

Voorbeeldafbeelding

Voor
de afbeelding vóór het effect.
Na
de afbeelding na de transformatie.
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();

Met dit effect wordt deze matrixbewerking uitgevoerd:

affinematrixbewerking

Hoewel de invoermatrix is gedefinieerd als een 3x2-matrix, wordt de laatste kolom gevuld met 0, 0 en 1 om een vierkante matrix te produceren. Hierdoor kunnen matrixververmenigvuldigen, zodat transformaties kunnen worden samengevoegd in één matrix.

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
De interpolatiemodus die wordt gebruikt om de afbeelding te schalen. Er zijn 6 schaalmodi die variëren in kwaliteit en snelheid.
Type is D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE.
De standaardwaarde is D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
De 3x2-matrix om de afbeelding te transformeren met behulp van de Direct2D-matrix transformatie.
Type is D2D1_MATRIX_3X2_F.
De standaardwaarde is Matrix3x2F::Identity().
Scherpte
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
In de kubieke interpolatiemodus van hoge kwaliteit is het scherpteniveau van het schaalfilter als een float tussen 0 en 1. De waarden zijn eenheidsloos. U kunt scherpte gebruiken om de kwaliteit van een afbeelding aan te passen wanneer u de afbeelding schaalt.
De scherptefactor beïnvloedt de vorm van de kernel. Hoe hoger de scherptefactor, hoe kleiner de kernel.
Opmerking: Deze eigenschap is alleen van invloed op de kubieke interpolatiemodus van hoge kwaliteit.
Type is FLOAT.
De standaardwaarde is 0,0f.

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.

Interpolatiemodi

Opsomming Beschrijving
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Maakt gebruik van anisotropische filtering om een patroon te steekproefen op basis van de getransformeerde vorm van de bitmap.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Maakt gebruik van een variabele grootte van een kubieke kernel van hoge kwaliteit om een pre-downscale van de afbeelding uit te voeren als omlaag schalen wordt gebruikt in de transformatiematrix. Vervolgens wordt de kubieke interpolatiemodus gebruikt voor de uiteindelijke uitvoer.

Notitie

Als u geen modus selecteert, wordt het effect standaard D2D1_2DAFFINETRANSFORM_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.

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-