Effet source bitmap
Utilisez l’effet source bitmap pour générer un ID2D1Image à partir d’un IWICBitmapSource à utiliser comme entrée dans un graphique d’effet. Cet effet effectue la mise à l’échelle et la rotation sur le processeur. Il peut également générer un mipmap mémoire système, qui peut être une optimisation des performances pour la mise à l’échelle active des images très volumineuses à différentes résolutions réduites.
Note
L’effet source bitmap prend son entrée en tant que propriété, et non comme entrée d’image. Vous devez utiliser la méthode SetValue, et non pas la méthode SetInput. La propriété WicBitmapSource est l’emplacement où vous spécifiez les données d’entrée d’image.
Le CLSID pour cet effet est CLSID_D2D1BitmapSource.
- propriétés Effect
- modes d’interpolation
- orientation
- modes Alpha
- Remarques
- Configuration requise
- rubriques connexes
Propriétés d’effet
Nom complet et énumération d’index | Description |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
Le IWICBitmapSource contenant les données d’image à charger. Le type est IWICBitmapSource. La valeur par défaut est NULL. |
Écaille D2D1_BITMAPSOURCE_PROP_SCALE |
Quantité d’échelle dans le sens X et Y. L’effet multiplie la largeur par la valeur X et la hauteur par la valeur Y. Cette propriété est une D2D1_VECTOR_2F définie comme suit : (échelle X, échelle Y). Les quantités d’échelle sont FLOAT, sans unité et doivent être positives ou 0. Le type est D2D1_VECTOR_2F. La valeur par défaut est {1.0f, 1.0f}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Mode d’interpolation utilisé pour mettre à l’échelle l’image. Pour plus d’informations, consultez modes d’interpolation. Si le mode désactive le mipmap, BitmapSouce met en cache l’image à la résolution déterminée par les propriétés Scale et EnableDPICorrection. Le type est D2D1_BITMAPSOURCE_INTERPOLATION_MODE. La valeur par défaut est D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Si vous définissez cette valeur sur TRUE, l’effet met à l’échelle l’image d’entrée pour convertir le DPI signalé par IWICBitmapSource en PPP du contexte de l’appareil. L’effet utilise le mode d’interpolation que vous définissez avec la propriété InterpolationMode. Si vous définissez cette valeur sur FALSE, l’effet utilise un ppp de 96.0 pour l’image de sortie. Le type est BOOL. La valeur par défaut est FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Mode alpha de la sortie. Cela peut être prémultiplié ou droit. Pour plus d’informations, consultez modes Alpha. Le type est D2D1_BITMAPSOURCE_ALPHA_MODE. La valeur par défaut est D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Orientation D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Opération de rotation et/ou de rotation à effectuer sur l’image. Pour plus d’informations, consultez Orientation. Le type est D2D1_BITMAPSOURCE_ORIENTATION. La valeur par défaut est D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Modes d’interpolation
L’effet interpole à l’aide de ce mode lorsqu’il met à l’échelle une image ou lorsqu’il corrige l’ppp. Les modes d’interpolation que cet effet utilise sont calculés par l’UC, et non par le GPU.
Nom | Description |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Échantillonne le point unique le plus proche et utilise cela. Ne génère pas de mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Utilise un exemple de quatre points et une interpolation linéaire. Ne génère pas de mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Utilise un noyau cube de 16 exemples pour l’interpolation. Ne génère pas de mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Utilise l’interpolation wic fant, identique à l’interface IWICBitmapScaler. Ne génère pas de mipmap. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Génère une chaîne mipmap dans la mémoire système à l’aide de l’interpolation biligne. Pour chaque mipmap, l’effet est mis à l’échelle vers le multiple le plus proche de 0,5 à l’aide de l’interpolation biligne, puis met à l’échelle la quantité restante à l’aide de l’interpolation linéaire. |
Orientation
La propriété Orientation peut être utilisée pour appliquer un indicateur d’orientation EXIF incorporé dans une image.
Nom | Description |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Faire défaut. L’effet ne modifie pas l’orientation de l’entrée. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Retourne l’image horizontalement. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Fait pivoter l’image dans le sens des aiguilles d’une montre de 180 degrés. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Fait pivoter l’image dans le sens des aiguilles d’une montre de 180 degrés et la retourne horizontalement. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Fait pivoter l’image dans le sens des aiguilles d’une montre de 270 degrés et la retourne horizontalement. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Fait pivoter l’image dans le sens des aiguilles d’une montre de 90 degrés. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Fait pivoter l’image dans le sens des aiguilles d’une montre de 90 degrés et la retourne horizontalement. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Fait pivoter l’image dans le sens des aiguilles d’une montre de 270 degrés. |
Cet extrait de code montre comment convertir des valeurs d’orientation EXIF (définies dans propkey.h) en valeurs 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;
}
}
Modes alpha
Nom | Description |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | La sortie de l’effet utilise l’alpha prémultipliée. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | La sortie de l’effet utilise l’alpha droit. |
Remarques
Pour optimiser les performances lors de l’utilisation de WIC et de direct2D ensemble, vous devez utiliser IWICFormatConverter pour convertir en un format de pixel approprié en fonction du scénario de votre application et de la précision native de l’image.
Dans la plupart des cas, le pipeline de direct2D de votre application ne nécessite que 8 bits par canal (bpc) de précision, ou l’image ne fournit que 8 bits de précision et vous devez donc effectuer une conversion en GUID_WICPixelFormat32bppPBGRA. Toutefois, si vous souhaitez tirer parti d’une précision supplémentaire fournie par une image (par exemple, un JPEG-XR ou TIFF stocké avec une précision supérieure à 8 bpc), vous devez utiliser un format de pixel RVBA. Le tableau ci-dessous fournit plus de détails.
Précision souhaitée | Précision native de l’image | Format de pixel recommandé |
---|---|---|
8 bits par canal | <= 8 bits par canal | GUID_WICPixelFormat32bppPBGRA |
Aussi élevé que possible | <= 8 bits par canal | GUID_WICPixelFormat32bppPBGRA |
Aussi élevé que possible | > 8 bits par canal | Ordre des canaux RVBA, alpha prémultiplié |
Étant donné que de nombreux formats d’image prennent en charge plusieurs niveaux de précision, vous devez utiliser IWICBitmapSource ::GetPixelFormat pour obtenir le format de pixel natif de l’image, puis utiliser IWICPixelFormatInfo pour déterminer le nombre de bits par canal de précision disponibles pour ce format. Notez également que tout le matériel ne prend pas en charge les formats de pixels haute précision. Dans ces cas, votre application peut avoir besoin de revenir à l’appareil WARP pour prendre en charge une haute précision.
Exigences
Exigence | Valeur |
---|---|
Client minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimum pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |