Dela via


Grafiska objekt

Windows innehåller en mängd olika ritverktyg att använda i enhetskontexter. Den innehåller pennor för att rita linjer, penslar för att fylla interiörer och teckensnitt för att rita text. MFC tillhandahåller grafikobjektklasser som motsvarar ritverktygen i Windows. Tabellen nedan visar tillgängliga klasser och motsvarande GDI-handtagstyper (Windows Graphics Device Interface).

Anmärkning

Mer information finns i dokumentationen om GDI+ SDK.

I den här artikeln förklaras användningen av dessa grafikobjektklasser:

Klasser för Windows GDI-objekt

Klass Typ av Windows-handtag
CPen HPEN
CBrush HBRUSH
CFont HFONT
CBitmap HBITMAP
CPalette HPALETTE
CRgn HRGN

Anmärkning

Klassen CImage ger förbättrat stöd för bitmappar.

Varje klass för grafikobjekt i klassbiblioteket har en konstruktor som gör att du kan skapa grafiska objekt för den klassen, som du sedan måste initiera med lämplig create-funktion, till exempel CreatePen.

Varje klass för grafikobjekt i klassbiblioteket har en cast-operator som skickar ett MFC-objekt till det associerade Windows-handtaget. Det resulterande handtaget är giltigt tills det associerade objektet kopplar bort det. Använd objektets Detach medlemsfunktion för att koppla från handtaget.

Följande kod omvandlar ett CPen objekt till ett Windows-handtag:

CPen myPen;
myPen.CreatePen(PS_COSMETIC, 1, RGB(255, 255, 0));
HPEN hMyPen = (HPEN)myPen;

Skapa ett grafiskt objekt i en enhetskontext

  1. Definiera ett grafiskt objekt på stackramen. Initiera objektet med den typspecifika skapa-funktionen, till exempel CreatePen. Du kan också initiera objektet i konstruktorn. Se diskussionen om enstegs- och tvåstegsskapande, som innehåller exempelkod.

  2. Markera objektet i den aktuella enhetskontexten och spara det gamla grafiska objektet som valdes tidigare.

  3. När du är klar med det aktuella grafiska objektet väljer du det gamla grafiska objektet tillbaka till enhetskontexten för att återställa dess tillstånd.

  4. Tillåt att det ramallokerade grafiska objektet tas bort automatiskt när omfånget avslutas.

Anmärkning

Om du kommer att använda ett grafiskt objekt upprepade gånger kan du allokera det en gång och välja det i en enhetskontext varje gång det behövs. Se till att ta bort ett sådant objekt när du inte längre behöver det.

Vad vill du veta mer om?

Se även

Fönsterobjekt