Effetto origine bitmap
Usare l'effetto origine bitmap per generare un ID2D1Image da un IWICBitmapSource da usare come input in un grafico degli effetti. Questo effetto esegue il ridimensionamento e la rotazione sulla CPU. Può anche generare facoltativamente un mipmap della memoria di sistema, che può essere un'ottimizzazione delle prestazioni per ridimensionare attivamente immagini molto grandi a varie risoluzioni ridotte.
Nota
L'effetto origine bitmap accetta l'input come proprietà, non come input dell'immagine. È necessario utilizzare il metodoSetValue, non il metodo SetInput. La proprietà WicBitmapSource è la posizione in cui si specificano i dati di input dell'immagine.
Il CLSID per questo effetto è CLSID_D2D1BitmapSource.
- proprietà effetto
- modalità di interpolazione
- orientamento
- modalità Alfa
- osservazioni
- requisiti
- argomenti correlati
Proprietà dell'effetto
Enumerazione del nome visualizzato e dell'indice | Descrizione |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
Il IWICBitmapSource contenente i dati dell'immagine da caricare. Il tipo è IWICBitmapSource. Il valore predefinito è NULL. |
Scala D2D1_BITMAPSOURCE_PROP_SCALE |
Quantità di scala nella direzione X e Y. L'effetto moltiplica la larghezza per il valore X e l'altezza in base al valore Y. Questa proprietà è un D2D1_VECTOR_2F definito come: (scala X, scala Y). Gli importi di scala sono FLOAT, unitless e devono essere positivi o 0. Il tipo è D2D1_VECTOR_2F. Il valore predefinito è {1.0f, 1.0f}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Modalità di interpolazione utilizzata per ridimensionare l'immagine. Per altre informazioni, vedi modalità di interpolazione. Se la modalità disabilita il mipmap, BitmapSouce memorizza l'immagine nella cache alla risoluzione determinata dalle proprietà Scale e EnableDPICorrection. Il tipo è D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Il valore predefinito è D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Se si imposta questa proprietà su TRUE, l'effetto ridimensiona l'immagine di input per convertire il valore DPI segnalato da IWICBitmapSource in DPI del contesto di dispositivo. L'effetto usa la modalità di interpolazione impostata con la proprietà InterpolationMode. Se si imposta questa proprietà su FALSE, l'effetto usa un valore DPI pari a 96,0 per l'immagine di output. Il tipo è BOOL. Il valore predefinito è FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Modalità alfa dell'output. Può essere premoltiplicato o dritto. Per altre informazioni, vedi modalità Alfa. Il tipo è D2D1_BITMAPSOURCE_ALPHA_MODE. Il valore predefinito è D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Orientamento D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Operazione di scorrimento e/o rotazione da eseguire sull'immagine. Per altre informazioni, vedi orientamento. Il tipo è D2D1_BITMAPSOURCE_ORIENTATION. Il valore predefinito è D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Modalità di interpolazione
L'effetto esegue l'interpolazione usando questa modalità quando ridimensiona un'immagine o quando corregge il valore DPI. Le modalità di interpolazione usate da questo effetto vengono calcolate dalla CPU, non dalla GPU.
Nome | Descrizione |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Campiona il singolo punto più vicino e lo usa. Non genera un mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Usa un campione a quattro punti e l'interpolazione lineare. Non genera un mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Usa un kernel cubico di esempio 16 per l'interpolazione. Non genera un mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Usa l'interpolazione fant wic, uguale all'interfacciaIWICBitmapScaler. Non genera un mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Genera una catena mipmap nella memoria di sistema usando l'interpolazione bilineare. Per ogni mipmap l'effetto viene ridimensionato al multiplo più vicino di 0,5 usando l'interpolazione bilineare e quindi ridimensiona la quantità rimanente usando l'interpolazione lineare. |
Orientamento
La proprietà Orientation può essere utilizzata per applicare un flag di orientamento EXIF incorporato all'interno di un'immagine.
Nome | Descrizione |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Default. L'effetto non modifica l'orientamento dell'input. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Capovolge l'immagine orizzontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Ruota l'immagine in senso orario di 180 gradi. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Ruota l'immagine in senso orario di 180 gradi e la capovolge orizzontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Ruota l'immagine in senso orario di 270 gradi e la capovolge orizzontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Ruota l'immagine in senso orario di 90 gradi. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Ruota l'immagine in senso orario di 90 gradi e la capovolge orizzontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Ruota l'immagine in senso orario di 270 gradi. |
Questo frammento di codice illustra come eseguire la conversione da valori di orientamento EXIF (definiti in propkey.h) a valori D2D1_BITMAPSOURCE_ORIENTATION.
#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;
}
}
Modalità alfa
Nome | Descrizione |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | L'output dell'effetto usa alfa premoltiplicato. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | L'output dell'effetto usa alfa dritto. |
Osservazioni
Per ottimizzare le prestazioni quando si usa WIC e Direct2D insieme, è consigliabile usare IWICFormatConverter per eseguire la conversione in un formato pixel appropriato in base allo scenario dell'app e alla precisione nativa dell'immagine.
Nella maggior parte dei casi, la pipeline direct2D dell'app richiede solo 8 bit per canale (bpc) di precisione oppure l'immagine fornisce solo 8 bpc precisione e pertanto è necessario eseguire la conversione in GUID_WICPixelFormat32bppPBGRA. Tuttavia, se si desidera sfruttare la precisione aggiuntiva fornita da un'immagine (ad esempio, un JPEG-XR o TIFF archiviato con una precisione maggiore di 8 bpc), è consigliabile usare un formato pixel basato su RGBA. La tabella seguente fornisce altri dettagli.
Precisione desiderata | Precisione nativa dell'immagine | Formato pixel consigliato |
---|---|---|
8 bit per canale | <= 8 bit per canale | GUID_WICPixelFormat32bppPBGRA |
Il più alto possibile | <= 8 bit per canale | GUID_WICPixelFormat32bppPBGRA |
Il più alto possibile | > 8 bit per canale | Ordine del canale RGBA, alfa premoltiplicato |
Poiché molti formati di immagine supportano più livelli di precisione, è consigliabile usare IWICBitmapSource::GetPixelFormat per ottenere il formato pixel nativo dell'immagine e quindi usare IWICPixelFormatInfo per determinare il numero di bit per canale di precisione disponibile per tale formato. Si noti anche che non tutti gli hardware supportano formati pixel ad alta precisione. In questi casi l'app potrebbe dover eseguire il fallback al dispositivo WARP per supportare la precisione elevata.
Fabbisogno
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |