Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí rastrového zdrojového efektu vygenerujte ID2D1Image z IWICBitmapSource pro použití jako vstup v grafu efektu. Tento efekt provádí škálování a otáčení procesoru. Volitelně také může vygenerovat mipmapu systémové paměti, což může být optimalizace výkonu pro aktivní škálování velmi velkých imagí v různých nižších rozlišeních.
Poznámka
Rastrový zdrojový efekt přebírá svůj vstup jako vlastnost, nikoli jako vstup obrázku. Musíte použít metodu SetValue, nikoli metodu SetInput. Vlastnost WicBitmapSource je místo, kam zadáte vstupní data obrázku.
CLSID pro tento efekt je CLSID_D2D1BitmapSource.
Vlastnosti efektu
| Zobrazovaný název a výčet indexu | Popis |
|---|---|
| WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource obsahující data obrázku, která se mají načíst. Typ je IWICBitmapSource. Výchozí hodnota je NULL. |
| Škála D2D1_BITMAPSOURCE_PROP_SCALE |
Velikost měřítka ve směru X a Y. Efekt vynásobí šířku hodnotou X a výškou hodnotou Y. Tato vlastnost je D2D1_VECTOR_2F definována takto: (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}. |
| InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Interpolační režim použitý ke škálování obrázku. Další informace najdete v režimech interpolace. Pokud režim zakáže mapu mip, BitmapSource uloží obrázek do mezipaměti v rozlišení určeném vlastnostmi Scale a EnableDPICorrection. Typ je D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Výchozí hodnota je D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
| EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Pokud nastavíte hodnotu TRUE, efekt škáluje vstupní obrázek tak, aby převeďte DPI hlášené IWICBitmapSource na DPI kontextu zařízení. Efekt používá režim interpolace, který jste nastavili s InterpolationMode vlastnost. Pokud nastavíte hodnotu NEPRAVDA, použije efekt pro výstupní obrázek hodnotu DPI 96,0. Typ je BOOL. Výchozí hodnota je FALSE. |
| AlfaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Alfa režim výstupu. To může být buď předem nastaveno, nebo rovno. Další informace najdete v alfa režimů. Typ je D2D1_BITMAPSOURCE_ALPHA_MODE. Výchozí hodnota je D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
| Orientace D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Operace překlopení nebo otočení, která se má na obrázku provést. Další informace najdete v tématu Orientace. Typ je D2D1_BITMAPSOURCE_ORIENTATION. Výchozí hodnota je D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Režimy interpolace
Efekt interpoluje tento režim při škálování obrázku nebo při opravě DPI. Režimy interpolace, které tento efekt používá, se počítají procesorem, nikoli GPU.
| Jméno | Popis |
|---|---|
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Vzorkuje nejbližší jeden bod a použije ho. Nevygeneruje mapu mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Používá čtyřbodový vzorek a lineární interpolaci. Nevygeneruje mapu mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Pro interpolaci se používá 16 vzorové krychlové jádro. Nevygeneruje mapu mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Používá interpolaci fantů WIC, stejně jako IWICBitmapScaler rozhraní. Nevygeneruje mapu mipmap. |
| D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Generuje řetěz mipmap v systémové paměti pomocí bilineární interpolace. Pro každou mipmapu efekt se škáluje na nejbližší násobek 0,5 pomocí bilineární interpolace a pak škáluje zbývající množství pomocí lineární interpolace. |
Orientace
Vlastnost Orientace lze použít k použití příznaku orientace EXIF, který je vložen do obrázku.
| Jméno | Popis |
|---|---|
| D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Výchozí. Efekt nezmění orientaci vstupu. |
| D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Překlopí obrázek vodorovně. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Otočí obrázek o 180 stupňů po směru hodinových ručiček. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Otočí obrázek o 180 stupňů po směru hodinových ručiček a vodorovně ho překlopí. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Otočí obrázek po směru hodinových ručiček o 270 stupňů a vodorovně ho překlopí. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Otočí obrázek o 90 stupňů po směru hodinových ručiček. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Otočí obrázek o 90 stupňů po směru hodinových ručiček a vodorovně ho překlopí. |
| D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Otočí obrázek o 270 stupňů po směru hodinových ručiček. |
Tento fragment kódu ukazuje, jak převést z hodnot orientace EXIF (definovaných v propkey.h) na D2D1_BITMAPSOURCE_ORIENTATION hodnoty.
#include <propkey.h>
#include <d2d1effects.h>
D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
switch (PhotoOrientation)
{
case PHOTO_ORIENTATION_NORMAL:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
case PHOTO_ORIENTATION_FLIPHORIZONTAL:
return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE180:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
case PHOTO_ORIENTATION_FLIPVERTICAL:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_TRANSPOSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE270:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
case PHOTO_ORIENTATION_TRANSVERSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE90:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
default:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
}
}
Režimy alfa
| Jméno | Popis |
|---|---|
| D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | Výstup efektu používá premultiplied alfa. |
| D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | Výstup efektu používá rovnou alfa. |
Poznámky
Pokud chcete optimalizovat výkon při použití WIC a Direct2D dohromady, měli byste použít IWICFormatConverter k převodu na příslušný formát pixelů založený na scénáři vaší aplikace a nativní přesnost obrázku.
Ve většině případů vyžaduje kanál Direct2 D Direct2D pouze 8 bitů na kanál (bpc), nebo obrázek poskytuje pouze 8 bpc přesnosti, a proto byste měli převést na GUID_WICPixelFormat32bppPBGRA. Pokud ale chcete využít větší přesnost poskytovanou obrázkem (například JPEG-XR nebo TIFF uloženou s přesností větší než 8 bpc), měli byste použít formát pixelů založený na RGBA. Další podrobnosti najdete v následující tabulce.
| Požadovaná přesnost | Nativní přesnost image | Doporučený formát pixelů |
|---|---|---|
| 8 bitů na kanál | <= 8 bitů na kanál | GUID_WICPixelFormat32bppPBGRA |
| Co nejvyšší | <= 8 bitů na kanál | GUID_WICPixelFormat32bppPBGRA |
| Co nejvyšší | > 8 bitů na kanál | Pořadí kanálů RGBA, premultiplied alfa |
Vzhledem k tomu, že mnoho formátů obrázků podporuje více úrovní přesnosti, měli byste použít IWICBitmapSource::GetPixelFormat získat nativní pixelový formát obrázku a pak použít IWICPixelFormatInfo určit, kolik bitů na kanál přesnosti je pro tento formát k dispozici. Všimněte si také, že ne veškerý hardware podporuje formáty pixelů s vysokou přesností. V takových případech se vaše aplikace možná bude muset vrátit k zařízení WARP, aby podporovala vysokou přesnost.
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í | d2d1efekty.h |
| Knihovna | d2d1.lib, dxguid.lib |