Anton Grigoriev - amit nem írt könyvek Delphi - 22. oldal

Használata ecsetek, tollak, és fontokat GDI alapvetően eltér, hogyan történik a VCL. TCanvas osztály a következő tulajdonságokkal rendelkezik Pen. Brush. és betűtípus. tulajdonságainak változását, amiknek a választás egy toll, ecset, betűtípust. A GDI ezeket a tárgyakat függetlenek, akkor létre kell hozni, hogy megkapja a fogantyút „kiválasztott”, hogy a kívánt eszköz keretében a SelectObject funkció és használat után kidobjuk. És törölheti csak azokat az objektumokat, amelyeket nem választott semmilyen összefüggésben. Vannak még számos szabványos objektumok, amelyek nem igényelnek sem hozhat létre vagy törölhet. Kilincsű alkalmazásával érhetjük GetStockObject funkciót. Vegyük például a kód-fragmens, amely felhívja a context leíró DC két sor: a kék és piros (lásd lista 1,18). Ez a kód, hogy SelectObject visszaadja az objektum fogantyú kapcsolatos választotta, melyet korábban kiválasztott. Tehát, amikor kiválasztják egy új tollat, visszatér a nyél és a toll, amelyet előzőleg kiválasztott.

Listing 1.18. Rajz különböző toll segítségével GDI

SelectObject (DC, CreatePen (PS_SOLID, 1, RGB (255, 0, 0)));

MoveToEx (DC, 100, 100, nulla);

LineTo (DC, 200, 200);

DeleteObject (SelectObject (DC, CreatePen (PS_SOLID, 1, RGB (0, 0, 255))));

MoveToEx (DC, 200, 100, nulla);

LineTo (DC, 100, 200);

GDI objektum leírók értelme csak a folyamatot, amely létrehozta őket, nem hárítható át a folyamatok közötti. Azonban néha megtalálja azt az állítást, hogy az átadás is lehetséges. A forrás ez a hiba. GDI kifogást fogantyúk átvihető folyamatok között az idősebb, 16-bites Windows, így minden nyilatkozatokat a lehetőségét, hogy egy ilyen átutalás csak alapul elavult információkat.

Tárolására raszteres képeket Windows, három formátumok: DDB, DIB és DIB-szakasz. DDB - Ez eszköztől függ Format, a formátum által meghatározott grafikus eszköz, amelyen van egy következtetést. DIB - jelentése Device Independent Bitmap, olyan formában, minden berendezést. DIB formátum - egy elavult formátum, amely nem teszi lehetővé a grafika GDI működik, hogy módosítja a képet, akkor módosítja a képet, csak egy módon: manuálisan megváltoztatja a színeket az egyes pixelek. A 32 bites változat más formátumban - DIB-szakasz. Valójában ez ugyanaz DIB, de a hozzáadott képességek felhívni rá a GDI-funkciókat. Minden különbség a három formátum megtalálható a kiváló könyv [1]; Szorítkozunk itt egy rövid áttekintést őket.

DIB-szakasz tárolható bármely memóriát, annak mérete korlátozott, csak a méret a rendelkezésre álló memória alkalmazása, a GDI a feladata, hogy ezt a képet a tisztán szoftveres algoritmusok semmilyen módon nem hardveres gyorsító. DIB-szakasz támogatja a különböző színmélység és közvetlen hozzáférést biztosít a memória területet, ahol a kép van tárolva. DIB-szakasz egyik hordozható készülékről a másikra. BMP-fájlokat tárolja a képet, mint egy DIB.

Class TBitmap tárolhatja a képet DDB és a DIB- szakasz - határozza meg a tulajdonságok PixelFormat. PfDevice érték: az a DDB, más értékek - DIB-szakasz különböző színmélységet. Alapértelmezett TBitmap létrehoz egy képformátum pfDevice. de a programozó tudja változtatni a formátumot bármikor. Ez létrehoz egy új képet a kívánt méretet, a régi van másolva, és elpusztult.

Az ingatlan PixelFormat szorosan kapcsolódik HandleType tulajdon. amely figyelembe veheti az értékek és bmDIB bmDDB. PixelFormat tulajdonság változás változást okoz a tulajdonságait HandleType. és fordítva.

Ha a kép betöltődik egy fájlból, az erőforrás vagy osztály TBitmap áramlás általában teremt kép DIB-szakasz méret, a szín a megfelelő forrás mélységét. Kivételt képeznek a tömörített fájlok (BMP formátum támogatja a tömörítést csak 16 és 256 színű képek) - ebben az esetben a DDB. A grafikus fájlt meghatározott globális változó DDBsOnly. Ez alapértelmezés szerint False. Ha megváltoztatja a True értékre. letölthető kép mindig a DDB formátumban.

Class TBitmap van scanline tulajdon. amelyen keresztül kaphat közvetlen hozzáférést biztosít egy sor alkotó képpontok egy képet. A feljegyzés azt mondja, hogy ez a tulajdonság lehet használni a DIB-képeket csak. Valójában azonban a DDB-image is lehetővé teszi a használatát az ingatlan, bár jelentős korlátokkal. Ha a kép alatt DDB- méret elérésekor scanline létrehozni DIB-copy scanline és visszaad egy pointert egy sor példányban. Ezért egyrészt a soronkénti dolgozik DDB-képek nagyon lassú, másrészt, nem működik a kép és annak másolatát, amely magában foglalja a következő korlátozásokat:

1. Egy másolatot készít idején kezelés scanline. Ezért változtatások a képet a GDI-funkciók majd elérni.

2. Minden hívás scanline létrehoz egy új példányt a képet, és a régi ugyanabban az időben elpusztult. Garantálja, hogy egy új példányt lesz található ugyanazon a területen a memória, ez nem, így a mutató kapott korábbi hívás scanline. többé nem lehet használni.

3. változtatásai a pixel tömb, csak befolyásolja a kép másolata, de a kép maga nem változik. Ezért abban az esetben, DDB scanline funkció lehetővé teszi, hogy olvasni, de nem változtat a képen.

Kapcsolódó cikkek