Partager via


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 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

ID2D1Effect