2010. június 8., kedd

Rajzolás WM5-ön

Re!
Szakdolgozat kapcsán Tanár úr felvetette, hogy mi lenne, ha egy sematikus térképet jelenítenék meg a megállókról. Mivel erre nincs kész komponens nekem kéne megírni rá grafikusan.
Gyakorlás képen kicsit játszottam, és írtam egy "rajzprogramot". Persze a teljesség igénye nélkül, inkább csak kipróbálni, hogy hogy is müxik a dolog.
Az elve és a működése viszonylag egyszerű:
  1. Figyelem az egér mozgást és érintést. Az egér itt természetesen a ceruza.
  2. Ha az a rajzterületen belül van az azt jelenti, hogy érdemes vele foglalkozni, ezért tovább küldöm feldolgozásra
  3. Vezetek egy listát a már megjeleníteni kívánt pontokról. Ha az újonnan érkezett pontok még nincsenek benne, akkor kérek kérek egy rajzolást.
  4. A rajzolás nem csinál mást, mint végigmegy a pontok listáján és minden pont helyére tesz egy előre beállított ármérűjű kitöltött kört.
  5. Meghívja a rajzterület belső kirajzoló metódusát, ami frissíti a képet és már meg is jelentek a pontok a kijelzőn
  6. 1. ponttól megy újra az egész
A dolog egészen jól és folyamatosan működik amíg csak néhány pont van a tárban, viszont a megjelenítés elkezd akadozni már néhány száz pontnál is és előjön a villódzás. Hogy ezt megszüntessem betettem egy Timert az egész rendszerbe. Ez nem csinál mást, mint amikor a rajzterület belső rajzoló metódusát hívják számol 300 ms-ot. Ha sikerül végigszámolnia akkor meghívja a kirajzolást. Viszont, ha új pont kerül be a számlálás megszakad és újra 300-tól megy. Így amíg új pontok kerülnek be addig nincs kirajzolás, csak ha már abbahagytuk. A villódzás megszünt.

Most még azon gondolkozom, hogy ha túl gyorsan rajzolunk a vonal szakadozik. Kipróbálom, hogy megoldható-e, hogy amikor pontot kell felvenni a program két részre szakad. Az egyik visszatért figyelni a következő pontot, a másik fele pedig a tárolást és az rajzolást végzi. Magyarán szálakat alkalmazni. Igazából nem tudom mi várható. Lehetséges, hogy a szálak nyitása és zárása miatt a program még lomhább lesz és még lasabban kell neki a pontokat bevinni.
A progi valahogy így néz ki most:


A sárga felületre lehet rajzolni. A csúszka állítja a toll vastagságot, a bal oldali szövegmezőben a berajzolt pontok száma látszik, a jobb oldaliban az utoljára berajzolt pont koordinátája.

Itt lehet beállítani a toll színét RGB szerint. Az alsó rész csak amolyan minta.

Nincsenek megjegyzések:

Megjegyzés küldése