Kategorie: 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
Mateusz M.

Ostatnie wpisy

Podsumowanie: luty i marzec 2024

Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More

1 tydzień ago

Podsumowanie: styczeń 2024

Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More

3 miesiące ago

Podsumowanie roku 2023

Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More

3 miesiące ago

Podsumowanie: grudzień 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More

4 miesiące ago

Praca zdalna – co z nią dalej?

Cześć, ostatnio w Internecie pojawiło się dużo artykułów, które nie były przychylne pracy zdalnej. Z drugiej strony większość komentarzy pod… Read More

4 miesiące ago

Podsumowanie: listopad 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W listopadzie dokończyłem cykl "Z mgły zrodzony" Sandersona. Tylko "Stop prawa" mi nie do… Read More

5 miesięcy ago