Opérations sur les objets graphiques
Une fois qu’une application a créé un DC d’affichage ou d’imprimante, elle peut commencer à dessiner sur l’appareil associé ou, dans le cas du DC de mémoire, il peut commencer à dessiner sur l’image bitmap stockée en mémoire. Toutefois, avant le début du dessin et parfois lors du dessin, il est souvent nécessaire de remplacer les objets par défaut par de nouveaux objets.
Une application peut examiner les attributs d’un objet par défaut en appelant les fonctions GetCurrentObject et GetObject . La fonction GetCurrentObject retourne un handle identifiant le stylet, le pinceau, la palette, la bitmap ou la police en cours, et la fonction GetObject Initialise une structure contenant les attributs de cet objet.
Certaines imprimantes fournissent des stylets, des pinceaux et des polices résidents qui peuvent être utilisés pour améliorer la vitesse de dessin dans une application. Deux fonctions peuvent être utilisées pour énumérer ces objets : EnumObjects et EnumFontFamilies. Si l’application doit énumérer des stylets résidents ou des pinceaux, elle peut appeler la fonction EnumObjects pour examiner les attributs correspondants. Si l’application doit énumérer les polices résidentes, elle peut appeler la fonction EnumFontFamilies (qui peut également énumérer les polices GDI).
Une fois qu’une application a déterminé qu’un objet par défaut doit être remplacé, elle crée un nouvel objet en appelant l’une des fonctions de création suivantes.
| Objet graphique | Fonction |
|---|---|
| Bitmap | CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap |
| Brush | CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush |
| Palette de couleurs | CreatePalette |
| Police | CreateFont, CreateFontIndirect |
| Stylet | CreatePen, CreatePenIndirect, ExtCreatePen |
| Région | CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn |
Chacune de ces fonctions retourne un handle identifiant un nouvel objet. Une fois qu’une application a extrait un handle, elle doit appeler la fonction SelectObject pour remplacer l’objet par défaut. Toutefois, l’application doit enregistrer le handle identifiant l’objet par défaut et utiliser ce handle pour remplacer le nouvel objet lorsqu’il n’est plus nécessaire. Lorsque l’application termine le dessin avec le nouvel objet, elle doit restaurer l’objet par défaut en appelant la fonction SelectObject , puis supprimer le nouvel objet en appelant la fonction SupprimerObjet . L’échec de la suppression d’objets entraîne de sérieux problèmes de performances.