info
Poniższy artykuł powstał wyłącznie do celów edukacyjnych, a autor (czyli ja) nie ponosi odpowiedzialności za wykorzystanie informacji zawartych w poniższym tekście niezgodnie z prawem lub etyką zawodową.
Położenie kursora
Aby odczytać lub zmienić położenie kursora, wystarczy odwołać się do Cursor.Position :
//odczytanie położenia
int px = Cursor.Position.X;
int py = Cursor.Position.Y;
//zmiana położenia, trololo :)
Cursor.Position = new Point(100, 100);
Ograniczamy wolność kursora ;)
Ciekawym atrybutem przy Cursor jest Clip.
Umożliwia on ustalenie granic, w których możemy operować naszym kursorem. W Windows taką granicą domyślnie jest ustalona rozdzielczość. Spróbujmy ograniczyć możliwość poruszania się naszego kursora myszki wyłącznie do obszaru naszego okna (uwzględniając, aby nie możliwe było zamknięcie/zmiana rozmiaru naszego okna), jak na poniższym zrzucie:
Oczywiście możemy zmienić atrybut formatki form.FormBorderStyle na odpowiedni, ale wówczas tracimy na wyglądzie okienka i nie ma zabawy, rozwiązanie stałoby się mniej uniwersalne.
przepis:
//pobieramy szybko wymiar naszego okna:
Rectangle currentwindow = this.Bounds;
//zmniejszamy obszar do zabawy oknie:
//35 - przybliżony rozmiar górnego paska
currentwindow.Height = this.Height - 35;
//10: aby uniemożliwić zmianę rozmiaru okna
currentwindow.Width = this.Width - 10;
/* Ustawiamy położenie początkowe
* (przesunięte o kilka pikseli,
* aby nie można było zmieniać rozmiaru
* z lewej/góry */
currentwindow.Location = new Point(currentwindow.Location.X+5, currentwindow.Location.Y + 30);
//podpinamy punkt początkowy granic i rozmiar
Cursor.Clip = new Rectangle(currentwindow.Location, currentwindow.Size);
możemy pobrać sobie gotowe granice np do rozdzielczości ekranu głównego:
Rectangle resolution = Screen.PrimaryScreen.Bounds;
..lub wskazując na dowolny, poruszając się po kolekcji AllScreens:
Rectangle r2 = Screen.AllScreens[1].Bounds;
Zastosowanie
Zmianę/odczyt położenia możemy wykorzystać m.in. przy:- podpowiedzi użytkownikowi, gdzie w danym momencie powinien kliknąć użytkownik
- tworzeniu aplikacji do zdalnego sterowania komputerem (a'la TeamViewer)
- grach / programach graficznych
- programach egzaminacyjnych
- aplikacjach dla osób niepełnosprawnych, ułatwiających pracę
- POS
- ...z okazji 1 kwietnia :)
Ograniczenia
Granice kursora zostaną "zresetowane" m.in. po:- zamknięciu programu
- zmianie okna wiodącego
- zmianie podświetlenia okna (np przycisk start, alt+tab, etc)
- zmianie rozmiaru/położenia okna
Brak komentarzy:
Prześlij komentarz