Sdílet prostřednictvím


Rastrový zdrojový efekt

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

Efekt ID2D1