Pentru aprofundare recomandăm lectia Working with Graphics din Java Tutorial. Studiul poate fi apoi continuat cu secțiunea 2D Graphics a aceluiași tutorial. |
In principiu, desenarea se poate face pe orice componentă grafică. Există însă clasa java.awt.Canvas, ale cărei instanțe sunt simple panouri destinate desenării (în engleză Canvas este pânza pictorului). Pentru desenare se mai folosesc frecvent și clasele JPanel și JLabel.
Sistemul de coordonate folosit pentru grafică are originea în colțul din stânga sus al componentei, axa Ox este orientată catre dreapta, iar axa Oy este orientată în jos. Coordonatele se exprimă în numere întregi (int), având ca unitate de măsură pixelul (punctul de pe ecran).
Un obiect din clasa Graphics încapsulează informația de stare
a contextului grafic la care se referă și anume: - referința la obiectul din clasa Component (sau dintr-o subclasa a acesteia) pe care se desenează; - o translație a originii sistemului de coordonate; toate coordonatele din desen sunt raportate la această origine; - decupajul curent (dreptunghiul în interiorul căruia se trasează desenul); - culoarea curentă; - fontul curent; - operația logică pe pixeli curentă (XOR sau paint); - alternarea curentă de culori pentru operația pe pixeli XOR. Originea sistemului de axe (punctul de coordonate 0,0) se găsește în colțul din stânga-sus al dreptunghiului de desenare. Axa 0x este îndreptată spre dreapta, iar axa 0y - in jos. Practic, clasa abstractă Graphics conține acele metode, care trebuie să existe în orice context grafic. Conținutul concret al acestor metode, deci modul efectiv în care se realizează funcțiile respective, depinde de contextul grafic real, deci de dispozitivul fizic pe care se face desenarea și de sistemul de operare folosit. Pe programatorul de aplicații sau miniaplicații în Java nu îl interesează însă acest lucru, deoarece el folosește în programele sale metodele clasei abstracte Graphics, fără să se preocupe de modul în care acestea vor fi executate. |
Principalele metode ale clasei Graphics sunt următoarele:
public abstract Graphics create() - creează și
întoarce un nou obiect din clasa Graphics, care este o copie a
obiectului pentru care se aplică această metodă; |
Metoda paint nu este invocată explicit în program. Ea
este invocată implicit (de către mașina virtuală Java) atunci când
componenta respectivă este afișată pe ecran sau își modifică
dimensiunile și/sau poziția. Dacă, totuși, programatorul dorește să
solicite explicit desenarea, folosește metoda
public void repaint()
Aceasta metodă care există, de asemenea, în clasa java.awt.Component,
nu trebuie redefinită, singurul ei rol fiind de a apela metoda paint.
Exemplul 1:
În fișierul Desen.java este dat
un exemplu de aplicație simplă, în care se testează diferite metode ale
clasei Graphics. În acest scop, s-a creat clasa PanouDesen ca o extensie
a clasei Canvas. În această clasă, a fost redefinită metoda paint(),
astfel încât să se traseze diferite desene: un dreptunghi gol, un
dreptunghi plin, un dreptunghi gol cu colțurile rotunjite, un dreptunghi
plin cu colțurile rotunjite, un oval gol, un oval plin, o linie frântă
și un poligon. S-au testat în acest fel metodele clasei Graphics. În
fereastra aplicației s-a introdus o instanță a clasei PanouDesen.
|
Exemplul 2:
În fișierul GraficeFunctii.java
este dat un exemplu de aplicație pentru trasarea graficelor unor
funcții. În fereastra aplicației s-au pus:
|