Partager via


Contextes de périphérique de 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 de périphérique mémoire. Un contrôleur de domaine de mémoire permet au système de traiter une partie de la mémoire comme un 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 des 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 parfois appelé contexte d’appareil compatible.

Le contrôleur de domaine de mémoire stocke des 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 mémoire est simplement un espace réservé. Ses dimensions sont d’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 la fonction CreateBitmap, CreateBitmapIndirect ou CreateCompatibleBitmap . Une fois la bitmap sélectionnée dans le contrôleur de domaine de la mémoire, le système remplace le tableau mono bits par un tableau suffisamment grand pour stocker des informations de couleur pour le rectangle de pixels spécifié.

Lorsqu’une application transmet le handle retourné par CreateCompatibleDC à l’une des fonctions de dessin, la sortie demandée n’apparaît pas sur la surface de dessin d’un appareil. Au lieu de cela, le système stocke les informations de couleur de la ligne, de la courbe, du texte ou de 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 de l’appareil source et un contrôleur de domaine de fenêtre ou d’écran comme contexte de l’appareil cible.

Lorsque vous affichez une DIB ou 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 qu’elle corresponde à 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ère et dernière 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 et dernières entrées de la palette logique avec les couleurs système. Renseignez ensuite les 256 couleurs NUMRESERVED restantes de la palette logique (dans notre exemple, les 236 couleurs restantes) avec les 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.