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: maj, czerwiec, lipiec i sierpień 2024

Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More

2 miesiące ago

Podsumowanie: kwiecień 2024

Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More

6 miesięcy ago

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

7 miesięcy 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

9 miesięcy 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

10 miesięcy 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

11 miesięcy ago