Megosztás a következőn keresztül:


Műveletek grafikus objektumokon

Miután egy alkalmazás létrehozott egy kijelzőt vagy nyomtató tartományvezérlőt, elkezdhet rajzolni a társított eszközön, vagy a memória tartományvezérlője esetén elkezdhet rajzolni a memóriában tárolt bitképen. Azonban a rajzolás megkezdése előtt, és néha a rajz folyamatban van, gyakran szükség van az alapértelmezett objektumok új objektumokra való lecserélésére.

Az alkalmazások a GetCurrentObject meghívásával és a GetObjectfüggvényeksegítségével megvizsgálhatják az alapértelmezett objektum attribútumait. A GetCurrentObject függvény az aktuális tollat, ecsetet, palettát, bitképet vagy betűtípust azonosító fogópontot ad vissza, a GetObject függvény pedig inicializálja az objektum attribútumait tartalmazó struktúrát.

Egyes nyomtatók rezidens tollakat, ecseteket és betűtípusokat biztosítanak, amelyek az alkalmazások rajzsebességének javítására használhatók. Az objektumok felsorolására két függvény használható: EnumObjects és EnumFontFamilies. Ha az alkalmazásnak rezidens tollakat vagy ecseteket kell számba vennie, meghívhatja a EnumObjects függvényt a megfelelő attribútumok vizsgálatához. Ha az alkalmazásnak rezidens betűtípusokat kell számba vennie, meghívhatja a EnumFontFamilies függvényt (amely GDI-betűtípusokat is számba vehet).

Miután egy alkalmazás megállapítja, hogy egy alapértelmezett objektumot cserélni kell, új objektumot hoz létre az alábbi létrehozási függvények egyikének meghívásával.

Grafikus objektum Funkció
Bitkép CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap
Kefe CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
Színpaletta CreatePalette
Betűkészlet CreateFont, CreateFontIndirect
Toll CreatePen, CreatePenIndirect, ExtCreatePen
Régió CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn

 

Mindegyik függvény egy új objektumot azonosító leírót ad vissza. Miután egy alkalmazás lekért egy leírót, meg kell hívnia a SelectObject függvényt az alapértelmezett objektum helyére. Az alkalmazásnak azonban mentenie kell az alapértelmezett objektumot azonosító leírót, és ezzel a leíróval cserélje le az új objektumot, ha már nincs rá szükség. Amikor az alkalmazás befejezi a rajzot az új objektummal, vissza kell állítania az alapértelmezett objektumot a SelectObject függvény meghívásával, majd a DeleteObject függvény meghívásával törölnie kell az új objektumot. Az objektumok törlése súlyos teljesítményproblémákat okoz.