Effetto origine bitmap
Usare l'effetto di origine bitmap per generare un ID2D1Image da un oggetto 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 dell'origine bitmap accetta l'input come proprietà, non come input dell'immagine. È necessario utilizzare il metodo SetValue , 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à dell'effetto
- Modalità di interpolazione
- Orientamento
- Modalità alfa
- Osservazioni:
- Requisiti
- Argomenti correlati
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Descrizione |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource contenente i dati dell'immagine da caricare. Il tipo è IWICBitmapSource. Il valore predefinito è NULL. |
Scalabilità D2D1_BITMAPSOURCE_PROP_SCALE |
Quantità di scala nella direzione X e Y. L'effetto moltiplica la larghezza per il valore X e l'altezza per il valore Y. Questa proprietà è una D2D1_VECTOR_2F definita 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 questo valore 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 capovolgimento e/o rotazione da eseguire sull'immagine. Per altre info, 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 punto singolo 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'interfaccia IWICBitmapScaler . Non genera un mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Genera la 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 | Valore predefinito. 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 90 gradi e la capovolge orizzontalmente. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Ruota l'immagine in senso orario 270 gradi. |
Questo frammento di codice illustra come convertire 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 premultiplied. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | L'output dell'effetto usa alfa dritto. |
Commenti
Per ottimizzare le prestazioni quando si usa WIC e Direct2D insieme, è consigliabile usare IWICFormatConverter per convertire 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 o l'immagine fornisce solo 8 bpc precisione e pertanto è necessario convertire in GUID_WICPixelFormat32bppPBGRA. Tuttavia, se si vuole sfruttare una precisione aggiuntiva fornita da un'immagine (ad esempio, un file JPEG-XR o TIFF archiviato con precisione superiore a 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 premultiplied |
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 ogni 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 tornare al dispositivo WARP per supportare la precisione elevata.
Requisiti
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 |
Libreria | d2d1.lib, dxguid.lib |