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
- egenskaper för effekt
- interpoleringslägen
- bitmapp för utdata
- Krav
- Relaterade ämnen
Exempelbild
Det här exemplet visar skalningseffekten som zoomar in 2 gånger indata och beskärning till den ursprungliga storleken.
Före |
---|
![]() |
Efter |
![]() |
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 |