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
- eigenschappen van effect
- interpolatiemodi
- uitvoer bitmap
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
In dit voorbeeld ziet u hoe het schaaleffect inzoomt op 2 keer de invoer en het bijsnijden naar de oorspronkelijke grootte.
Voor |
---|
![]() |
Na |
![]() |
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 |