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.