Delen via


Bewerkingen op grafische objecten

Nadat een toepassing een weergave- of printerdomeincontroller heeft gemaakt, kan deze beginnen met tekenen op het bijbehorende apparaat of, in het geval van de geheugendomeincontroller, het kan beginnen met tekenen op de bitmap die in het geheugen is opgeslagen. Voordat de tekening begint en soms wanneer de tekening wordt uitgevoerd, is het echter vaak nodig om de standaardobjecten te vervangen door nieuwe objecten.

Een toepassing kan de kenmerken van een standaardobject onderzoeken door de functies GetCurrentObject en GetObject aan te roepen. De functie GetCurrentObject retourneert een ingang die de huidige pen, penseel, palet, bitmap of lettertype identificeert en de functie GetObject initialiseert een structuur met de kenmerken van dat object.

Sommige printers bieden huispennen, borstels en lettertypen die kunnen worden gebruikt om de tekensnelheid in een toepassing te verbeteren. Er kunnen twee functies worden gebruikt om deze objecten te inventariseren: EnumObjects en EnumFontFamilies. Als de toepassing residente pennen of borstels moet inventariseren, kan deze de EnumObjects functie aanroepen om de bijbehorende kenmerken te onderzoeken. Als de toepassing residente lettertypen moet inventariseren, kan deze de functie EnumFontFamilies aanroepen (waarmee ook GDI-lettertypen kunnen worden opgesomd).

Zodra een toepassing vaststelt dat een standaardobject moet worden vervangen, wordt er een nieuw object gemaakt door een van de volgende aanmaakfuncties aan te roepen.

Afbeeldingsobject Functie
Bitmap CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap
Borstel CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
Kleurenpalet CreatePalette-
Lettertype CreateFont, CreateFontIndirect-
Pen CreatePen, CreatePenIndirect, ExtCreatePen
Regio CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolyGonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn

 

Elk van deze functies retourneert een ingang die een nieuw object identificeert. Nadat een toepassing een ingang heeft opgehaald, moet deze de functie SelectObject aanroepen om het standaardobject te vervangen. De toepassing moet echter de ingang opslaan die het standaardobject aangeeft en deze ingang gebruiken om het nieuwe object te vervangen wanneer het niet meer nodig is. Wanneer de toepassing klaar is met het nieuwe object, moet het standaardobject worden hersteld door de functie SelectObject aan te roepen en vervolgens het nieuwe object te verwijderen door de functie DeleteObject aan te roepen. Het verwijderen van objecten veroorzaakt ernstige prestatieproblemen.