Delphi - Szöveg kirajzolása a betűk körvonalával

forráskód letöltése
Amikor szöveget írunk ki a képernyőre akkor elegendő megadnunk, hogy pontosan milyen betűtípust szeretnénk használni, valamint azt, hogy milyen karakterek jelenjenek meg.

Ilyenkor valójában egyenesek és görbék kerülnek kirajzolásra, amelyekből betűk állnak elő. Ha tehát ismernénk egy adott betűtípus esetén egy-egy betűnek azt az adathalmazát, mely leírja, hogy merre is kell húzni ezeket az egyeneseket illetve görbéket, akkor a rajzolást mi is elvégezhetnénk.

Persze ekkor még csak ugyanazt látnánk a képernyőn, mintha a szokásos módszerrel kiírtuk volna szövegünket a képernyőre. Most viszont már ennél többre is képesek vagyunk. Ha ismerjük a betűk körvonalának kirajzolásához szükséges adatokat, akkor ezeket manipulálhatjuk is megjelenítés előtt.

Vagyis a szöveget forgathatjuk, torzíthatjuk, mindenféle trükköt alkalmazhatunk rajta.

Mellékelt példa azt mutatja be, hogy miként lehet egy tetszőleges betűtípus tetszőleges karaktereit felbontani egyenesekre és görbékre. Első lépésként a megjelenítendő szöveget a BeginPath és EndPath között a szükséges betűtípussal ki kell rajzolnunk. E két függvényről részletesebb információ az alább hivatkozott cikkekben már megtalálható, így ezt most nem ismételnénk meg.

Ezután jön a lényeg, vagyis a szöveg átalakítása vonalakká, görbékké. Ehhez a GetPath nevű függvényt használhatjuk. Első paraméterként a rajzeszközünk azonosítóját kell megadnunk, majd két mutatót, mely egy-egy tömbre mutat. Az első tömbbe kapjuk meg a rajzoláshoz szükséges koordinátákat, míg a másodikba arra vonatkozólag kapunk információt, hogy egyenes, vagy görbe vonalat kell-e rajzolnunk. A GetPath utolsó paramétere egy integer változó lesz. Ebbe kapjuk vissza, hogy hány koordináta került az előbbi tömbbe.

Ezek után már rendelkezésünkre áll minden szükséges adat a kérdéses szövegről, így azt akár már ki is rajzolhatnánk a képernyőre. Előtte azonban ezen a koordináta halmazon egy tetszőleges műveletet végezhetünk. A példa egyszerűségének kedvéért most csupán a rajz forgatását valósítjuk meg. Meghívjuk a Rotate belső eljárásunkat, melyet már két héttel ezelőtt bemutattunk a "Grafikai objektum forgatása tetszőleges szögben" című cikkben.

Miután a karakterek koordinátáit elforgattuk, jöhet a kirajzolás, melyhez létrehoztunk egy PolyDraw9598 eljárást. A PolyDraw nevű eljárás létezik a Windows-ban, de csak NT alatt használható, így Win9X esetén marad a mi eljárásunk, mely teljesen megegyezik működését tekintve a PolyDraw-al.

A működésének lényege, hogy egy ciklussal végignézzük az összes koordinátát és a benne lévő információk alapján elvégezzük a kirajzolást.