Opérations sur les objets graphiques
Une fois qu’une application a créé un contrôleur de domaine d’affichage ou d’imprimante, elle peut commencer à dessiner sur l’appareil associé ou, dans le cas du contrôleur de domaine de mémoire, elle peut commencer à dessiner sur la bitmap stockée en mémoire. Toutefois, avant le début du dessin, et parfois pendant le dessin en cours, 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, l’image bitmap ou la police actuels, et la fonction GetObject initialise une structure contenant les attributs de cet objet.
Certaines imprimantes fournissent des stylets, des pinceaux et des polices 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 les stylets ou pinceaux résidents, 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 détermine qu’un objet par défaut doit être remplacé, elle crée un objet en appelant l’une des fonctions de création suivantes.
Objet Graphic | 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, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn |
Chacune de ces fonctions retourne un handle identifiant un nouvel objet. Une fois qu’une application a récupéré 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 DeleteObject . Le fait de ne pas supprimer des objets entraîne de graves problèmes de performances.