Efekt měřítka
Pomocí tohoto efektu můžete obrázek vertikálně navýšit nebo snížit. Efekt má šest režimů škálování: nejbližší soused, lineární, krychlový, multi-vzork lineární, anisotropní a vysoce kvalitní krychlový.
CLSID pro tento efekt je CLSID_D2D1Scale.
- příklad obrázku
- vlastnosti efektu
- režimy interpolace
- výstupní rastrový obrázek
- požadavky na
- související témata
Příklad obrázku
Tento příklad ukazuje zvětšení efektu měřítka ve 2násobku vstupu a oříznutí na původní velikost.
Před |
---|
![]() |
Po |
![]() |
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();
Vlastnosti efektu
Zobrazovaný název a výčet indexu | Popis |
---|---|
Škála D2D1_SCALE_PROP_SCALE |
Velikost měřítka ve směru X a Y jako poměr velikosti výstupu ke vstupní velikosti. Tato vlastnost D2D1_VECTOR_2Fdefined jako: (měřítko X, měřítko Y). Částky škálování jsou FLOAT, unitless a musí být kladné nebo 0. Typ je D2D1_VECTOR_2F. Výchozí hodnota je {1.0f, 1.0f}. |
CenterPoint D2D1_SCALE_PROP_CENTER_POINT |
Bod středu měřítka obrázku. Tato vlastnost je D2D1_VECTOR_2F definována takto: (bod X, bod Y). Jednotky jsou v jednotkách DIP. Pomocí vlastnosti středového bodu můžete škálovat kolem jiného bodu než v levém horním rohu. Typ je D2D1_VECTOR_2F. Výchozí hodnota je {0.0f, 0.0f}. |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
Režim použitý k výpočtu ohraničení obrázku, měkkého nebo pevného. Další informace najdete v režimech ohraničení. Typ je D2D1_BORDER_MODE. Výchozí hodnota je D2D1_BORDER_MODE_SOFT. |
Bystrost D2D1_SCALE_PROP_SHARPNESS |
Ve vysoce kvalitním režimu krychlové interpolace je úroveň ostrosti filtru měřítka plovoucí mezi 0 a 1. Hodnoty jsou bez jednotkové. Pomocí ostrosti můžete upravit kvalitu obrázku při zmenšení měřítka obrázku. Faktor ostrosti ovlivňuje tvar jádra. Čím vyšší je faktor ostrosti, tím menší jádro. Poznámka: Tato vlastnost má vliv pouze na režim interpolace s vysokou kvalitou. Typ je FLOAT. Výchozí hodnota je 0,0f. |
InterpolationMode D2D1_SCALE_PROP_INTERPOLATION_MODE |
Režim interpolace, který efekt používá ke škálování obrázku. Existuje 6 režimů škálování, které jsou v rozsahu kvality a rychlosti. Další informace najdete v režimech interpolace. Typ je D2D1_SCALE_INTERPOLATION_MODE. Výchozí hodnota je D2D1_SCALE_INTERPOLATION_MODE_LINEAR. |
Režimy ohraničení
Jméno | Popis |
---|---|
D2D1_BORDER_MODE_SOFT | Efekt vloží vstupní obrázek s průhlednými černými pixely pro vzorky mimo vstupní hranice, když použije konvoluční jádro. Tím se vytvoří měkký okraj obrázku a v procesu se rozbalí výstupní rastrový obrázek o velikost jádra. |
D2D1_BORDER_MODE_HARD | Efekt rozšíří vstupní obrázek o transformaci ohraničení zrcadlového typu pro vzorky mimo vstupní hranice. Velikost výstupního rastrového obrázku se rovná velikosti vstupního rastrového obrázku. |
`
Režimy interpolace
Výčet | Popis |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Vzorkuje nejbližší jeden bod a použije ho. Tento režim používá méně času zpracování, ale vypíše nejnižší kvalitu obrázku. |
D2D1_SCALE_INTERPOLATION_MODE_LINEAR | Používá čtyřbodový vzorek a lineární interpolaci. Tento režim používá více času zpracování než režim nejbližšího souseda, ale vypíše image s vyšší kvalitou. |
D2D1_SCALE_INTERPOLATION_MODE_CUBIC | Pro interpolaci se používá 16 vzorové krychlové jádro. Tento režim používá nejvíce času zpracování, ale výstupy image s vyšší kvalitou. |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Používá 4 lineární vzorky v jednom pixelu pro dobrý anti-aliasing okrajů. Tento režim je vhodný pro vertikální snížení kapacity o malé množství na obrázcích s několika pixely. |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Používá anisotropní filtrování k vzorkování vzorku podle transformovaného tvaru rastrového obrázku. |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Pomocí proměnné velikosti vysoce kvalitního krychlového jádra provede obrázek před snížením kapacity, pokud je snížení kapacity zapojeno do transformační matice. Pak použije režim krychlové interpolace pro konečný výstup. |
Poznámka
Pokud režim nevyberete, efekt se ve výchozím nastavení D2D1_SCALE_INTERPOLATION_MODE_LINEAR.
Poznámka
Anisotropní režim generuje mipmapy při škálování, ale pokud nastavíte Cached vlastnost true na efekty, které jsou vstupy do tohoto efektu, mipmapy nebudou generovány pokaždé, když pro dostatečně malé obrázky.
Výstupní rastrový obrázek
Umístění a velikost výstupního rastrového obrázku závisí na zadaném faktoru měřítka a středovém bodu.
Velikost výstupního rastrového obrázku můžete vypočítat pomocí této rovnice:
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)
Efekt zaokrouhlí zlomky pixelů až na nejbližší celý pixel.
Umístění rastrového obrázku je (0, 0) nebo hodnota vlastnosti středového bodu.
Požadavky
Požadavek | Hodnota |
---|---|
Minimální podporovaný klient | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Minimální podporovaný server | Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store] |
Záhlaví | d2d1effects.h |
Knihovna | d2d1.lib, dxguid.lib |