Speichergerätekontexte
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 Speichergerä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, mit dem eine Anwendung die Farbdaten für Bitmaps, die auf einer normalen Zeichnungsoberfläche erstellt wurden, vorübergehend speichern kann. Da die Bitmap mit dem Gerät kompatibel ist, wird ein Speicher-DC manchmal auch als kompatible Gerätekontextbezeichnet.
Der Speicher-DC speichert Bitmapbilder für ein bestimmtes Gerät. Eine Anwendung kann einen Speicher-DC erstellen, indem die CreateCompatibleDC--Funktion aufgerufen wird.
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 in den DC auswählen, indem sie die SelectObject-Funktion aufruft. Verwenden Sie zum Erstellen einer Bitmap der entsprechenden Dimensionen die CreateBitmap-, CreateBitmapIndirect-oder CreateCompatibleBitmap--Funktion. 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 Rechteck von Pixeln zu speichern.
Wenn eine Anwendung den von CreateCompatibleDC zurückgegebenen 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, Text oder Region im Array von Bits. Die Anwendung kann das im Arbeitsspeicher gespeicherte Bild wieder auf eine Zeichnungsoberfläche kopieren, indem die BitBlt--Funktion aufgerufen wird, wobei der Speicher DC als Quellgerätekontext und ein Fenster oder Bildschirm DC als Zielgerätekontext identifiziert wird.
Beim Anzeigen eines DIB oder einer DDB, die von 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 anordnen, um dem Layout der Systempalette zu entsprechen. Rufen Sie dazu 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 BEISPIELSWEISE NUMRESERVED 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 die PC_NOCOLLAPSE Kennzeichnung auf jeder dieser Farben fest.
Weitere Informationen zu Farbe und Paletten finden Sie unter Farben. Weitere Informationen zu Bitmaps und Bitmapvorgängen finden Sie unter Bitmaps.