Partager via


Device-Dependent Bitmaps

Les bitmaps dépendantes de l’appareil (DDB) sont décrites à l’aide d’une structure unique, la structure BITMAP. Les membres de cette structure spécifient la largeur et la hauteur d’une région rectangulaire, en pixels ; largeur du tableau qui mappe les entrées de la palette d’appareils en pixels ; et le format de couleur de l’appareil, en termes de plans de couleurs et de bits par pixel. Une application peut récupérer le format de couleur d’un appareil en appelant la fonction GetDeviceCaps et en spécifiant les constantes appropriées. Notez qu’une DDB ne contient pas de valeurs de couleur ; Au lieu de cela, les couleurs sont dans un format dépendant de l’appareil. Pour plus d’informations, consultez Color in Bitmaps. Étant donné que chaque appareil peut avoir son propre ensemble de couleurs, une DDB créée pour un appareil peut ne pas s’afficher correctement sur un autre appareil.

Pour utiliser une base de données DDB dans un contexte d’appareil, elle doit avoir l’organisation de couleur de ce contexte d’appareil. Par conséquent, une DDB est souvent appelée bitmap compatible et a généralement de meilleures performances GDI qu’une DIB. Par exemple, pour créer une bitmap pour la mémoire vidéo, il est préférable d’utiliser une bitmap compatible avec le même format de couleur que l’affichage principal. Une fois en mémoire vidéo, le rendu sur l’image bitmap et son affichage à l’écran sont considérablement plus rapides qu’à partir d’une surface de mémoire système ou directement à partir d’une DIB.

En plus d’améliorer les performances GDI, les bitmaps compatibles sont utilisées pour capturer des images (voir Capture d’une image) et pour créer des bitmaps au moment de l’exécution pour les menus, voir « Création de la bitmap » dans (voir Utilisation des menus).

Pour transférer une bitmap entre des appareils avec une organisation de couleurs différente, utilisez GetDIBits pour convertir la bitmap compatible en DIB et appeler SetDIBits ou StretchDIBits pour afficher la DIB sur le deuxième appareil.

Il existe deux types de DDB : ignorés et nondiscardables. Une DDB ignorée est une bitmap que le système ignore si la bitmap n’est pas sélectionnée dans un contrôleur de domaine et si la mémoire système est faible. La fonction CreateDiscardableBitmap crée des bitmaps ignorées. Les CreateBitmap, CreateCompatibleBitmapet fonctions CreateBitmapIndirect créent des bitmaps non modifiables.

Une application peut créer une base de données DDB à partir d’une DIB en initialisant les structures requises et en appelant la fonction CreateDIBitmap. La spécification de CBM_INIT dans l’appel à CreateDIBitmap équivaut à appeler la fonction CreateCompatibleBitmap pour créer une base de données DDB au format de l’appareil, puis appeler la fonction SetDIBits pour traduire les bits DIB vers la base de données DDB. Pour déterminer si un appareil prend en charge la fonction SetDIBits, appelez la fonction GetDeviceCaps, en spécifiant RC_DI_BITMAP comme indicateur RASTERCAPS.