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);
}