HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az egér mozgásának felvétele


Példaprogram letöltése

7871 bájt

Számos oktatóprogramban találkozhatunk olyan funkcióval, hogy a számítógép saját maga vezérli az egér mozgását. Például ezzel megmutatva, hogy hova kell kattintanunk. Készítünk egy példát, amely segítségével mi is felvehetjük az egérkurzor mozgását, majd visszajátszhatjuk azt. A program lehetőséget biztosít arra is, hogy a mozgást elmentsük egy állományba, vagy onnan betöltsük.

Az egér mozgásának felvételéhez és visszajátszásához két külön Timer kontrolra van szükség. Az időzítők Interval tulajdonságát célszerű minél kisebb értékre állítani, hogy a rögzített mozgás kellő finomságú legyen.
A mozgást úgy tudjuk rögzíteni, hogy az időzítő által meghatározott ütemben elmentjük az egér koordinátáit. A koordinátákat egy tömbben tároljuk, amelyet az alábbi módon deklarálhatunk.
private ArrayList moveList= new ArrayList();
Amikor a felvétel gombra kattintunk, aktiválnunk kell a recordTimer-t. A kurzor koordinátáinak felvételét a recordTimer Tick eseménye hajtja végre.
Az egérkurzor pozíciójához a Cursor.Position property-n keresztül férhetünk hozzá. Ezen keresztül lekérdezhetjük és be is állíthatjuk az egér helyét a képernyőn.
A felvétel során a moveList tömböt mindig bővítjük az egér aktuális pozíciójával.
A Stop gomb megnyomásakor nincs más teendőnk, mint a két időzítőt kikapcsolni.
Amikor visszajátsszuk a mozgást, a playTimer-t kell bekapcsolnunk. A Tick eseményében végig kell haladnunk a moveList tömb elemein és az egeret a soron következő koordinátákra kell irányítanunk. Itt a moveIndex változó mutatja a soron következő elemet.
Szükség lehet arra is, hogy a mozgást elmentsük egy állományba, és visszatöltsük azt.
A mentéshez és a visszatöltéshez is a BinaryWriter osztályt használjuk. A mentés egyszerűsítése érdekében egy adott pont X és Y koordinátáit külön mentjük el.
Stream st = File.Open(textBox1.Text, FileMode.Create);
st.Seek(0, SeekOrigin.End);               
BinaryWriter bw = new BinaryWriter(st);
for (int i = 0; i < moveList.Count; i++)
{
  bw.Write( ((Point) (moveList[i])).X);
  bw.Write( ((Point) (moveList[i])).Y);
}

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 151. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |