Arbeitsspeichergerätekontexte

Damit Anwendungen Ausgaben im Arbeitsspeicher platzieren können, anstatt sie an ein tatsächliches Gerät zu senden, verwenden Sie einen speziellen Gerätekontext für Bitmapvorgänge, die als Speichergerätekontext bezeichnet werden. Ein Speicherdomänencontroller ermöglicht dem System, einen Teil des Arbeitsspeichers als virtuelles Gerät zu behandeln. Es handelt sich um ein Array von Bits im Arbeitsspeicher, das eine Anwendung vorübergehend verwenden kann, um die Farbdaten für Bitmaps zu speichern, die auf einer normalen Zeichnungsoberfläche erstellt wurden. Da die Bitmap mit dem Gerät kompatibel ist, wird ein Speicherdomänencontroller manchmal auch als kompatibler Gerätekontext bezeichnet.

Der Arbeitsspeicher-DC speichert Bitmapbilder für ein bestimmtes Gerät. Eine Anwendung kann einen Speicherdomänencontroller erstellen, indem sie die CreateCompatibleDC-Funktion aufruft.

Die ursprüngliche Bitmap in einem Speicherdomänencontroller ist einfach ein Platzhalter. Die Abmessungen sind pixel x 1 Pixel. Bevor eine Anwendung mit dem Zeichnen beginnen kann, muss sie eine Bitmap mit der entsprechenden Breite und Höhe im DC auswählen, indem sie die SelectObject-Funktion aufruft. Um eine Bitmap der entsprechenden Dimensionen zu erstellen, verwenden Sie die Funktion CreateBitmap, CreateBitmapIndirectoder CreateCompatibleBitmap. Nachdem die Bitmap im Arbeitsspeicher-DC ausgewählt wurde, ersetzt das System das Single-Bit-Array durch ein Array, das groß genug ist, um Farbinformationen für das angegebene Pixelrechteck zu speichern.

Wenn eine Anwendung das von CreateCompatibleDC zurückgegebene Handle an eine der Zeichnungsfunktionen übergibt, wird die angeforderte Ausgabe nicht auf der Zeichnungsoberfläche eines Geräts angezeigt. Stattdessen speichert das System die Farbinformationen für die resultierende Linie, Kurve, den Text oder den Bereich im Array von Bits. Die Anwendung kann das im Arbeitsspeicher gespeicherte Bild wieder auf eine Zeichnungsoberfläche kopieren, indem sie die BitBlt-Funktion aufruft und den Arbeitsspeicher-DC als Quellgerätekontext und einen Fenster- oder Bildschirmdomänencontroller als Zielgerätekontext identifiziert.

Beim Anzeigen eines DIB oder einer DDB, die aus einem DIB auf einem Palettengerät erstellt wurde, können Sie die Geschwindigkeit verbessern, mit der das Bild gezeichnet wird, indem Sie die logische Palette so anordnen, dass sie dem Layout der Systempalette entspricht. Rufen Sie hierzu GetDeviceCaps mit dem NUMRESERVED-Wert auf, um die Anzahl der reservierten Farben im System abzurufen. Rufen Sie dann GetSystemPaletteEntries auf, und füllen Sie die ersten und letzten NUMRESERVED/2-Einträge der logischen Palette mit den entsprechenden Systemfarben aus. Wenn NUMRESERVED beispielsweise 20 ist, würden Sie die ersten und letzten 10 Einträge der logischen Palette mit den Systemfarben ausfüllen. Füllen Sie dann die verbleibenden 256 NUMRESERVED-Farben der logischen Palette (in unserem Beispiel die verbleibenden 236 Farben) mit Farben aus dem DIB aus, und legen Sie das PC _ NOCOLLAPSE-Flag für jede dieser Farben fest.

Weitere Informationen zu Farben und Paletten finden Sie unter Farben. Weitere Informationen zu Bitmaps und Bitmapvorgängen finden Sie unter Bitmaps.