Partager via


Contextes d’appareil mémoire

Pour permettre aux applications de placer la sortie en mémoire plutôt que de l’envoyer à un appareil réel, utilisez un contexte d’appareil spécial pour les opérations bitmap appelées contexte d’appareil de mémoire . Un contrôleur de domaine de mémoire permet au système de traiter une partie de la mémoire en tant qu’appareil virtuel. Il s’agit d’un tableau de bits en mémoire qu’une application peut utiliser temporairement pour stocker les données de couleur pour les bitmaps créées sur une surface de dessin normale. Étant donné que la bitmap est compatible avec l’appareil, un contrôleur de domaine de mémoire est également parfois appelé contexte d’appareil compatible .

Le contrôleur de domaine de mémoire stocke les images bitmap pour un appareil particulier. Une application peut créer un contrôleur de domaine de mémoire en appelant la fonction CreateCompatibleDC.

La bitmap d’origine dans un contrôleur de domaine de mémoire est simplement un espace réservé. Ses dimensions sont un pixel par un pixel. Pour qu’une application puisse commencer à dessiner, elle doit sélectionner une bitmap avec la largeur et la hauteur appropriées dans le contrôleur de domaine en appelant la fonction SelectObject. Pour créer une bitmap des dimensions appropriées, utilisez laCreateBitmap, CreateBitmapIndirectou fonction CreateCompatibleBitmap. Une fois que la bitmap est sélectionnée dans le contrôleur de domaine de mémoire, le système remplace le tableau mono bits par un tableau suffisamment grand pour stocker les informations de couleur pour le rectangle spécifié de pixels.

Lorsqu’une application transmet le handle retourné par CreateCompatibleDC à l’une des fonctions de dessin, la sortie demandée n’apparaît pas sur l’aire de dessin d’un appareil. Au lieu de cela, le système stocke les informations de couleur pour la ligne, la courbe, le texte ou la région résultantes dans le tableau de bits. L’application peut copier l’image stockée en mémoire sur une surface de dessin en appelant la fonction BitBlt, en identifiant le contrôleur de domaine de mémoire comme contexte d’appareil source et une fenêtre ou un contrôleur de domaine d’écran comme contexte d’appareil cible.

Lors de l’affichage d’une DIB ou d’une DDB créée à partir d’une DIB sur un appareil de palette, vous pouvez améliorer la vitesse à laquelle l’image est dessinée en organisant la palette logique pour correspondre à la disposition de la palette système. Pour ce faire, appelez GetDeviceCaps avec la valeur NUMRESERVED pour obtenir le nombre de couleurs réservées dans le système. Appelez ensuite GetSystemPaletteEntries et renseignez les premières et dernières entrées NUMRESERVED/2 de la palette logique avec les couleurs système correspondantes. Par exemple, si NUMRESERVED a la valeur 20, vous devez renseigner les 10 premières entrées de la palette logique avec les couleurs système. Ensuite, renseignez les couleurs 256-NUMRESERVED restantes de la palette logique (dans notre exemple, les 236 couleurs restantes) avec des couleurs de la DIB et définissez l’indicateur PC_NOCOLLAPSE sur chacune de ces couleurs.

Pour plus d’informations sur les couleurs et les palettes, consultez Couleurs. Pour plus d’informations sur les bitmaps et les opérations bitmap, consultez Bitmaps.