Kontexte von Speichergeräten
Damit Anwendungen die Ausgabe 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 Arbeitsspeichergerätekontext bezeichnet werden. Ein Speicher-DC ermöglicht es 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 werden. Da die Bitmap mit dem Gerät kompatibel ist, wird ein Speicher-DC manchmal auch als kompatibler Gerätekontext bezeichnet.
Der Speicher-DC speichert Bitmapbilder für ein bestimmtes Gerät. Eine Anwendung kann einen Speicher-DC erstellen, indem sie die CreateCompatibleDC-Funktion aufruft.
Die ursprüngliche Bitmap in einem Speicher-DC ist einfach ein Platzhalter. Seine Abmessungen sind ein Pixel um ein 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 . Verwenden Sie zum Erstellen einer Bitmap mit den entsprechenden Dimensionen die Funktionen CreateBitmap, CreateBitmapIndirect oder CreateCompatibleBitmap . Nachdem die Bitmap im Speicher-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 den von CreateCompatibleDC zurückgegebenen Ziehpunkt 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, Text oder Region 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 Speicher-DC als Quellgerätekontext und einen Fenster- oder Bildschirm-DC 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 restlichen 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.