Mateusz Mazurek – programista z pasją

Python, architektura, ciekawostki ze świata IT

Programowanie

Canvas – klasa do rysowania w JavaME

Cześć! Cieszę się, że mnie odwiedziłeś/aś. Zanim przejdziesz do artykułu chciałbym zwrocić Ci uwagę na to, że ten artykuł był pisany kilka lat temu (2012-12-22) miej więc proszę na uwadzę że rozwiązania i przemyślenia które tu znajdziesz nie muszą być aktualne. Niemniej jednak zachęcam do przeczytania.

Klasa Canvas jest to domyslnie dostępna klasa w JavaME. Dzięki niej możemy rysować na ekranie telefonu.. :) Zazwyczaj implementacja użycia klasy najlepiej wygląda poprzez stworzenie własnej klasy dziedziczącej po Canvas. Przeciężamy wtedy metody i korzystamy z klasy nadrzędnej jak z interfejsu. Przed przykładem opiszę co ta klasa potrafi czyli jej ciekawsze metody i stałe…

keyPressed(int keyCode) – event na naciśniecie klawisza
keyReleased(int keyCode) – na zwolnienie klawisza
keyRepeated(int keyCode) – trzymanie klawisza

pointerDragged(int x, int y) – przytrzymanie wskaźnika (np palcem po ekranie telefonu)
pointerPressed(int x, int y) – naciśniecie na ekran telefonu
pointerReleased(int x, int y) – puszczenie ekranu telefonu

repaint() – przerysowywuje ekran.

getHeight() – zwraca wysokość ekranu.
getWidth() – zwraca szerokość ekranu.

Proste, nie? Założmy że chcialibyśmy mieć aplikację, która pozwala rysować palcem po ekranie. Aaa no i jeszcze jest klasa Graphics, które instancja jest do używa w metodzie paint(Graphics g) ale metody tej klasy służą już tylko do rysowania i są dość intuicyjnie nazywane.

Jak powinno działać takie rysowanie po ekranie? Po naciśnięciu na ekran, powinno się odczytać aktualną wartość położenia kursora i w tym miejscu powinno się położyć kropkę. I powielać to za każdym przesunieciem myszki, co da efekt prostego rysowania po ekranie :)
Popatrzmy na kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class CanvasDemo extends Canvas{
int x,y;
protected void pointerDragged(int x, int y){
this.x=x;
this.y=y;
repaint();
}
protected void paint(Graphics g) {

g.setColor (255,255,255);
g.drawLine(x,y,x,y);

}

}

Proste, prawda? W metodzie która obłsuguje zdarzenie „przeciągaj po ekranie” która pobiera aktualne wartość wskazywanego obszaru. Repaint wywołuje paint() która rysuje kropkę w zadanym punktcie. Wykorzystam teraz swoj brak talentu do rysowania i zaprezentuje jak to działa :)

(… po kilku minutach..)

To tak w ramach wykorzystania tematu.. :) No i korzystając już ze światecznej atmosfery – wszystkiego co najlepsze, dla każdego z osobna.. :)

Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments