Dela via


Skalningseffekt

Använd den här effekten om du vill skala upp eller ned en bild. Effekten har sex skalningslägen: närmaste granne, linjär, kubik, flerexempel linjär, anisotropisk och högkvalitativ kubik.

CLSID för den här effekten är CLSID_D2D1Scale.

Exempelbild

Det här exemplet visar skalningseffekten som zoomar in 2 gånger indata och beskärning till den ursprungliga storleken.

Före
bilden före effekten.
Efter
bilden efter transformen.
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();

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
Skala
D2D1_SCALE_PROP_SCALE
Skalningsmängden i X- och Y-riktningen som ett förhållande mellan utdatastorleken och indatastorleken. Den här egenskapen D2D1_VECTOR_2Fdefined som: (X-skala, Y-skala). Skalningsbeloppen är FLOAT, enhetslösa och måste vara positiva eller 0.
Typen är D2D1_VECTOR_2F.
Standardvärdet är {1.0f, 1.0f}.
CenterPoint
D2D1_SCALE_PROP_CENTER_POINT
Bildens skalningspunkt. Den här egenskapen är en D2D1_VECTOR_2F definierad som: (punkt X, punkt Y). Enheterna finns i DIP:er.
Använd egenskapen center point för att skala runt en annan punkt än det övre vänstra hörnet.
Typen är D2D1_VECTOR_2F.
Standardvärdet är {0.0f, 0.0f}.
BorderMode
D2D1_SCALE_PROP_BORDER_MODE
Det läge som används för att beräkna bildens kantlinje, mjuk eller hård. Mer information finns i kantlinjelägen.
Typen är D2D1_BORDER_MODE.
Standardvärdet är D2D1_BORDER_MODE_SOFT.
Skärpa
D2D1_SCALE_PROP_SHARPNESS
I kubikinterpolationsläget av hög kvalitet är skalningsfiltrets skärpanivå mellan 0 och 1. Värdena är enhetslösa. Du kan använda skärpa för att justera kvaliteten på en bild när du skalar ned bilden.
Skärpafaktorn påverkar kärnans form. Ju högre skärpafaktor, desto mindre kernel.
Obs! Den här egenskapen påverkar endast kubikinterpoleringsläget av hög kvalitet.
Typen är FLOAT.
Standardvärdet är 0,0f.
InterpolationMode
D2D1_SCALE_PROP_INTERPOLATION_MODE
Interpoleringsläget som effekten använder för att skala bilden. Det finns 6 skalningslägen som varierar i kvalitet och hastighet. Mer information finns i interpoleringslägen.
Typen är D2D1_SCALE_INTERPOLATION_MODE.
Standardvärdet är D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Kantlinjelägen

Namn Beskrivning
D2D1_BORDER_MODE_SOFT Effekten fyller ut indatabilden med transparenta svarta bildpunkter för exempel utanför indatagränsen när den tillämpar involutionskärnan. Detta skapar en mjuk kant för bilden och expanderar i processen utdatabitmappen efter kernelns storlek.
D2D1_BORDER_MODE_HARD Effekten utökar indatabilden med en kantlinjetransformering av speglingstyp för exempel utanför indatagränserna. Storleken på utdatabitmappen är lika med storleken på indatabitmappen.

`

Interpoleringslägen

Uppräkning Beskrivning
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR Exempel på den närmaste enskilda punkten och använder den. I det här läget används mindre bearbetningstid, men den lägsta kvalitetsbilden matas ut.
D2D1_SCALE_INTERPOLATION_MODE_LINEAR Använder ett fyrpunktsexempel och linjär interpolation. Det här läget använder mer bearbetningstid än närmaste grannläge, men ger en bild av högre kvalitet.
D2D1_SCALE_INTERPOLATION_MODE_CUBIC Använder en 16-exempelkubik kernel för interpolering. Det här läget använder mest bearbetningstid, men ger en bild av högre kvalitet.
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Använder 4 linjära exempel inom en enda pixel för bra kantutjämning. Det här läget är bra för att skala ned med små mängder på bilder med några bildpunkter.
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC Använder anisotropisk filtrering för att prova ett mönster enligt bitmappens transformerade form.
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Använder en kubikkärn med variabel storlek av hög kvalitet för att utföra en förskala avbildningen om nedskalning ingår i transformeringsmatrisen. Använder sedan kubikinterpoleringsläget för de slutliga utdata.

Not

Om du inte väljer ett läge är effekten som standard D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Not

Anisotropt läge genererar mipmaps vid skalning, men om du anger egenskapen Cached till true för de effekter som indata till den här effekten, genereras inte mipmaps varje gång för tillräckligt små bilder.

Utdatabitmapp

Platsen och storleken på utdatabitmappen beror på den angivna skalningsfaktorn och mittpunkten.

Du kan beräkna storleken på utdatabitmappen med hjälp av den här ekvationen:

BitmappSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)

Effekten avrundar bråk med bildpunkter upp till närmaste hela pixel.

Bitmappens plats är (0, 0) eller värdet för egenskapen center point.

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect