Frage

Als relativer Neuling in MFC, sehe ich Geräte Contexts (DCs) viel. Ich verstehe vage, dass es etwas mit dem Zeichnen zu tun, aber die Einzelheiten sind nicht sehr gut erklärt überall, dass ich finden kann. Was ein „kompatibles Device Context“ bedeutet das Erstellen und warum ist es wichtig? Was bedeutet AuswählenObjekt tun, und wie muss ich einen DC kompatibel ersten machen?

War es hilfreich?

Lösung

Ein Device Context ist nur ein Ort, dass Zeichnung auftritt, wenn Sie also zwei verschiedene DC haben, sind Sie Zeichnung an zwei verschiedenen Orten. Art wie eine Datei-Handelte.

Geräte Contexts kann Immobilien auf dem Bildschirm beziehen, oder auf Bitmaps, dass nur residieren im Speicher und wahrscheinlich andere Orte, auch das ist nur die beide ich im Moment denken kann.

kompatibel Kontexte sind diejenigen, die die gleiche zugrunde liegende Pixel Organisation haben, durch die Anzahl der Bits pro Pixel gemeint, Bytes pro Pixel, Farb Organisation und so weiter. Speicher-Bitmap Gerätekontexte können jede Organisation haben Sie wollen, aber Ihr Bildschirm Kontexte werden verwandt sein (schließlich) zu Puffer auf Ihrer Grafikkarte, die wird (je nach Modus, usw.) haben eine sehr spezifische Pixel Organisation.

kompatibele Kontexte zu haben, bedeutet die effizienten Bilddaten zwischen ihnen zu übertragen, da nur wenig oder gar keine Übersetzung der Daten erforderlich ist. Am anderen Extrem, wenn Sie eine 256-Farbpalette haben, 8-Bit-Karte und versuchen Sie es zu einem Bildschirm blitten, die 8 Bit pro Pixel jeweils RGBA hat, wird jeder letzte Pixel signifikante Massieren erfordern, wie sie kopiert und so unvereinbar Kopieren Bitmaps ist sehr viel langsamer. Gemäß der Dokumentation Win32 SDK, mindestens BitBlt () und StretchBlt () „wandeln das Quellfarbformat das Zielformat entsprechen“, so dass es getan werden kann.

Untersuchen CreateCompatibleDC () und CreateCompatibleBitmap () als Ausgangspunkte für wie Zeichnen Kontexte zu schaffen, die mit bereits bestehenden kompatibel sind.

AuswählenObjekt () steuert, welche Ressourcen sind derzeit aktiv im Gerätekontext. Ein Kontext hat eine Strom Feder, Pinsel, Schriftart und Bitmap. Diese machen viele der anderen GDI-Aufrufe einfacher, indem Sie weniger Parameter specifiy. Zum Beispiel müssen Sie nicht die Schriftart angeben, wenn Sie TextOut () verwenden, aber wenn Sie die Schriftart ändern möchten, das ist, wo AuswählenObjekt () kommt in. Wenn Sie AuswählenObjekt füttern () ein Handle für eine Schriftart, die Rückkehr Wert ist ein Griff in die Schriftart, die in der Tat war, und nachfolgende Operationen verwenden, um die neue Schriftart. Das Verhalten ist das gleiche für die anderen Arten von Ressourcen, Stifte, Pinsel, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top