Sdílet prostřednictvím


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

Tento příklad ukazuje zvětšení efektu měřítka ve 2násobku vstupu a oříznutí na původní velikost.

Před
obrázek před efektem.
Po
obrázek po transformaci.
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

ID2D1Effect