Freigeben über


Vorgänge für Grafikobjekte

Nachdem eine Anwendung eine Anzeige oder einen Drucker DC erstellt hat, kann sie mit der Zeichnung auf dem zugeordneten Gerät beginnen oder im Falle des Speicher-DC mit dem Zeichnen auf der im Speicher gespeicherten Bitmap beginnen. Bevor die Zeichnung jedoch beginnt und manchmal während der Zeichnung ausgeführt wird, ist es häufig notwendig, die Standardobjekte durch neue Objekte zu ersetzen.

Eine Anwendung kann die Attribute eines Standardobjekts untersuchen, indem die funktionen GetCurrentObject und GetObject- aufgerufen werden. Die GetCurrentObject--Funktion gibt einen Handle zurück, der den aktuellen Stift, den Pinsel, die Palette, die Bitmap oder die Schriftart identifiziert, und die GetObject-Funktion initialisiert eine Struktur, die die Attribute dieses Objekts enthält.

Einige Drucker stellen residente Stifte, Pinsel und Schriftarten bereit, mit denen die Zeichengeschwindigkeit in einer Anwendung verbessert werden kann. Zum Aufzählen dieser Objekte können zwei Funktionen verwendet werden: EnumObjects und EnumFontFamilies. Wenn die Anwendung residente Stifte oder Pinsel aufzählen muss, kann sie die EnumObjects-Funktion aufrufen, um die entsprechenden Attribute zu untersuchen. Wenn die Anwendung residente Schriftarten aufzählen muss, kann sie die EnumFontFamilies Funktion aufrufen (die auch GDI-Schriftarten aufzählen kann).

Sobald eine Anwendung feststellt, dass ein Standardobjekt ersetzt werden muss, wird ein neues Objekt erstellt, indem eine der folgenden Erstellungsfunktionen aufgerufen wird.

Grafikobjekt Funktion
Bitmap CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap
Bürsten CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
Farbpalette CreatePalette-
Schriftart CreateFont, CreateFontIndirect
Feder CreatePen, CreatePenIndirect, ExtCreatePen
Region CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn

 

Jede dieser Funktionen gibt ein Handle zurück, das ein neues Objekt identifiziert. Nachdem eine Anwendung ein Handle abgerufen hat, muss sie die SelectObject-Funktion aufrufen, um das Standardobjekt zu ersetzen. Die Anwendung sollte jedoch das Handle speichern, das das Standardobjekt identifiziert, und dieses Handle verwenden, um das neue Objekt zu ersetzen, wenn es nicht mehr benötigt wird. Wenn die Anwendung die Zeichnung mit dem neuen Objekt abgeschlossen hat, muss das Standardobjekt wiederhergestellt werden, indem die SelectObject-funktion aufgerufen und dann das neue Objekt gelöscht wird, indem die DeleteObject--Funktion aufgerufen wird. Das Löschen von Objekten führt zu schwerwiegenden Leistungsproblemen.