Delen via


Schaaleffect

Gebruik dit effect om een afbeelding omhoog of omlaag te schalen. Het effect heeft zes schaalmodi: dichtstbijzijnde buur, lineair, kubieke, multi-sample lineaire, anisotropische en hoogwaardige kubieke.

De CLSID voor dit effect is CLSID_D2D1Scale.

Voorbeeldafbeelding

In dit voorbeeld ziet u hoe het schaaleffect inzoomt op 2 keer de invoer en het bijsnijden naar de oorspronkelijke grootte.

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

scaleEffect->SetInput(0, bitmap);

scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));

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

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
Schub
D2D1_SCALE_PROP_SCALE
De schaalgrootte in de X- en Y-richting als verhouding van de uitvoergrootte tot de invoergrootte. Deze eigenschap is een D2D1_VECTOR_2Fdefined als: (X-schaal, Y-schaal). De schaalbedragen zijn FLOAT, unitless en moeten positief of 0 zijn.
Het type is D2D1_VECTOR_2F.
De standaardwaarde is {1.0f, 1.0f}.
CenterPoint
D2D1_SCALE_PROP_CENTER_POINT
Het middelpunt van het schalen van afbeeldingen. Deze eigenschap is een D2D1_VECTOR_2F gedefinieerd als: (punt X, punt Y). De eenheden bevinden zich in DIPs.
Gebruik de middelste punteigenschap om een ander punt dan de linkerbovenhoek te schalen.
Het type is D2D1_VECTOR_2F.
De standaardwaarde is {0.0f, 0.0f}.
BorderMode
D2D1_SCALE_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.
Het type is D2D1_BORDER_MODE.
De standaardwaarde is D2D1_BORDER_MODE_SOFT.
Scherpte
D2D1_SCALE_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 de scherpte gebruiken om de kwaliteit van een afbeelding aan te passen wanneer u de afbeelding omlaag 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.
Het type is FLOAT.
De standaardwaarde is 0,0f.
InterpolationMode
D2D1_SCALE_PROP_INTERPOLATION_MODE
De interpolatiemodus die het effect gebruikt om de afbeelding te schalen. Er zijn 6 schaalmodi die variëren in kwaliteit en snelheid. Zie Interpolatiemodi voor meer informatie.
Het type is D2D1_SCALE_INTERPOLATION_MODE.
De standaardwaarde is D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Randmodi

Naam Beschrijving
D2D1_BORDER_MODE_SOFT Het effect vult de invoerafbeelding op met transparante zwarte pixels voor steekproeven buiten de invoergrenzen wanneer de convolutionele kernel wordt toegepast. Hiermee maakt u een vloeiende rand voor de afbeelding en in het proces wordt de uitvoer bitmap uitgebreid met de grootte van de kernel.
D2D1_BORDER_MODE_HARD Het effect breidt de invoerafbeelding uit met een transformatie van het spiegeltype voor voorbeelden buiten de invoergrenzen. De grootte van de uitvoer bitmap is gelijk aan de grootte van de invoer bitmap.

`

Interpolatiemodi

Opsomming Beschrijving
D2D1_SCALE_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_SCALE_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_SCALE_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_SCALE_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_SCALE_INTERPOLATION_MODE_ANISOTROPIC Maakt gebruik van anisotropische filtering om een patroon te steekproefen op basis van de getransformeerde vorm van de bitmap.
D2D1_SCALE_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_SCALE_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 locatie en grootte van de uitvoer bitmap zijn afhankelijk van de opgegeven schaalfactor en het middelpunt.

U kunt de grootte van de uitvoer bitmap berekenen met behulp van deze vergelijking:

BitmapSizex(pixels)=Schaalx*Oorspronkelijke bitmapgroottex (DIPs)*(UserDPI/96)
BitmapSizey(pixels)=Schaaly*Oorspronkelijke bitmapgroottey (DIPs)*(UserDPI/96)

Het effect rondt breuken van pixels naar boven af tot de dichtstbijzijnde hele pixel.

De locatie van de bitmap is (0, 0) of de waarde van de middelste punteigenschap.

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-