Bitmappskällans effekt
Använd bitmappskällans effekt för att generera en ID2D1Image- från en IWICBitmapSource- för användning som indata i ett effektdiagram. Den här effekten utför skalning och rotation på processorn. Det kan också generera en mipmap för systemminne, vilket kan vara en prestandaoptimering för aktiv skalning av mycket stora bilder med olika reducerad upplösning.
Not
Bitmappskällans effekt tar indata som en egenskap, inte som en bildinmatning. Du måste använda metoden SetValue, inte metoden SetInput. Egenskapen WicBitmapSource är där du anger indata för avbildningen.
CLSID för den här effekten är CLSID_D2D1BitmapSource.
- egenskaper för effekt
- interpoleringslägen
- orientering
- Alfalägen
- kommentarer
- Krav
- Relaterade ämnen
Effektegenskaper
Visningsnamn och indexuppräkning | Beskrivning |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource som innehåller de bilddata som ska läsas in. Typen är IWICBitmapSource. Standardvärdet är NULL. |
Skala D2D1_BITMAPSOURCE_PROP_SCALE |
Skalningsmängden i X- och Y-riktningen. Effekten multiplicerar bredden med X-värdet och höjden med Y-värdet. Den här egenskapen är en D2D1_VECTOR_2F definierad 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}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Interpoleringsläget som används för att skala bilden. Mer information finns i interpoleringslägen. Om läget inaktiverar mipmap cachelagrar BitmapSouce bilden enligt den upplösning som bestäms av egenskaperna Skala och EnableDPICorrection. Typen är D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Standardvärdet är D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Om du anger TRUE skalas indataavbildningen för att konvertera DPI:n som rapporteras av IWICBitmapSource till enhetskontextens DPI. Effekten använder interpoleringsläget som du anger med egenskapen InterpolationMode. Om du ställer in detta på FALSE använder effekten en DPI på 96,0 för utdatabilden. Typen är BOOL. Standardvärdet är FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Alfaläget för utdata. Detta kan vara antingen förmultiplied eller rakt. Mer information finns i Alfalägen. Typen är D2D1_BITMAPSOURCE_ALPHA_MODE. Standardvärdet är D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Orientering D2D1_BITMAPSOURCE_PROP_ORIENTATION |
En vänd- och/eller rotationsåtgärd som ska utföras på bilden. Mer information finns i Orientering. Typen är D2D1_BITMAPSOURCE_ORIENTATION. Standardvärdet är D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Interpoleringslägen
Effekten interpolerar med det här läget när den skalar en bild eller när den korrigerar DPI:t. De interpoleringslägen som den här effekten använder beräknas av processorn, inte GPU:n.
Namn | Beskrivning |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Exempel på den närmaste enskilda punkten och använder den. Genererar ingen mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Använder ett fyrpunktsexempel och linjär interpolation. Genererar ingen mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Använder en 16-exempelkubik kernel för interpolering. Genererar ingen mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Använder WIC-fantinterpolation, samma som IWICBitmapScaler-gränssnittet. Genererar ingen mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Genererar mipmap-kedja i systemminnet med hjälp av bilinearinterpolation. För varje mipmap skalas effekten till närmaste multipel av 0,5 med hjälp av bilinearinterpolation och skalar sedan den återstående mängden med linjär interpolation. |
Orientering
Egenskapen Orientering kan användas för att använda en EXIF-orienteringsflagga som är inbäddad i en bild.
Namn | Beskrivning |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Standard. Effekten ändrar inte indataorienteringen. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Vänder bilden vågrätt. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Roterar bilden medsols 180 grader. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Roterar bilden medsols 180 grader och vänder den vågrätt. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Roterar bilden medsols 270 grader och vänder den vågrätt. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Roterar bilden medsols 90 grader. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Roterar bilden medsols 90 grader och vänder den vågrätt. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Roterar bilden medsols 270 grader. |
Det här kodfragmentet visar hur du konverterar från EXIF-orienteringsvärden (definierade i propkey.h) till D2D1_BITMAPSOURCE_ORIENTATION värden.
#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;
}
}
Alfalägen
Namn | Beskrivning |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | Effektutdata använder premultiplied alfa. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | Effektutdata använder rak alfa. |
Anmärkningar
Om du vill optimera prestanda när du använder WIC och Direct2D tillsammans bör du använda IWICFormatConverter för att konvertera till ett lämpligt pixelformat baserat på appens scenario och bildens interna precision.
I de flesta fall kräver antingen appens Direct2D- pipeline endast 8 bitar per kanal (bpc) precision, eller så ger bilden bara 8 bpc precision, och därför bör du konvertera till GUID_WICPixelFormat32bppPBGRA. Men om du vill dra nytta av extra precision som tillhandahålls av en bild (till exempel en JPEG-XR eller TIFF som lagras med större än 8 bpc precision), bör du använda ett RGBA-baserat pixelformat. Tabellen nedan innehåller mer information.
Önskad precision | Bildens inbyggda precision | Rekommenderat pixelformat |
---|---|---|
8 bitar per kanal | <= 8 bitar per kanal | GUID_WICPixelFormat32bppPBGRA |
Så högt som möjligt | <= 8 bitar per kanal | GUID_WICPixelFormat32bppPBGRA |
Så högt som möjligt | > 8 bitar per kanal | RGBA-kanalordning, förmultiplied alfa |
Eftersom många bildformat stöder flera precisionsnivåer bör du använda IWICBitmapSource::GetPixelFormat för att hämta bildens interna pixelformat och sedan använda IWICPixelFormatInfo för att avgöra hur många bitar per kanal med precision som är tillgängliga för det formatet. Observera också att inte all maskinvara har stöd för pixelformat med hög precision. I sådana fall kan din app behöva återgå till WARP-enheten för att stödja hög precision.
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 |