Download - C10 – LPO: Primitie grafice 2D
![Page 1: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/1.jpg)
C10 – LPO: Primitie grafice 2D
CUPRINS
JFrame JPanel 2D:
coorodate linie dreptunghi, patrat elipsa, cerc text poligon.
![Page 2: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/2.jpg)
Obiective
După parcurgerea acestui curs ar trebuie sa puteţi: înţelege principiile de lucru cu geometria
2D din Java; crea un cod gradic sigur utilizand Swing; înţelege şi modifica cod JDeveopler pentru
geometria 2D; înţelege si genera grafica pe baza
primitivelor geometrice 2D: linie, dreptunghi, cerc, text, poligon si culoare.
![Page 3: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/3.jpg)
Frame se numeste Frame o fereasta care nu este continuta in alta
fereastra (toate celelalte ferestre sunt continute in ea); orice obiect grafic de interfata numit componenta
(Component) sau container (Container) are la baza suprafata de desenare oferta de Frame;
clasa pentru crearea unui ferestre Frame este JFrame Component: o superclasa pentru toate obiectele grafice de
interfata (Buttons, Text Boxes, Labels, Menus, Lists, etc). Container: o clasa pentru gruparea componentelor (frame
si panel sunt exemple de containere); Panel: Container invizibil care tine componente grafice; Graphics: Clasa abstracta ce defineste contextul grafic
pentru desenarea de forme si texte.
![Page 4: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/4.jpg)
Crearea unui Frameimport javax.swing.*;
public class TestFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame de test");
frame.setSize(500,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
![Page 5: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/5.jpg)
Crearea unui Frame in JDeveloper
File > New (Ctr+N) apoi > ,
codul generat de JDeveloper este echivalent dar nu idenic.
1
2
3
1
2
3
![Page 6: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/6.jpg)
Cod de Frame generat din JDeveloper
import java.awt.Dimension;import javax.swing.JFrame;
public class TestFrameJD extends JFrame { public TestFrameJD() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } }
private void jbInit() throws Exception { this.getContentPane().setLayout( null ); this.setSize( new Dimension(400, 300) ); this.setTitle( "Frame de test din JDeveloper" ); }}
![Page 7: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/7.jpg)
Coordonate grafice implicit, Frame-ul are
marimea inutila de 0x0 pixeli, cu metoda setSize(lungime, inaltime) modificam dimensiunile implicite;
screenHeight
screenWidth
frameHeight
screenWidth
(x, y)
Frame
Ecran
(0,0)
implicit, Frame-ul se afiseaza in coltul stanga-sus al ecranului;
afisatea intr-o alta pozitie se face cu metoda setLocation(x,y). Metoda defineste pozitia coltului stanga-sus in (x,y).
![Page 8: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/8.jpg)
Centrarea Frame-uluiimport java.awt.Dimension;import java.awt.Toolkit;import javax.swing.*;
public class TestFrame { public static void main(String[] args) { JFrame frame = new JFrame("Test de Frame"); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 300); Dimension frameSize = frame.getSize();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int x = (screenSize.width - frameSize.width) / 2; int y = (screenSize.height - frameSize.height) / 2; frame.setLocation(x, y); }}
![Page 9: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/9.jpg)
Grafica in Panel in general Pane-urile sunt containere pentru
gruparea componentelor de interfara grafica; in practica programarii se recomanda plasarea
acestor componente in panel-uri si plasarea panel-urilor intr-un frame;
JPanel este clasa ce permite trasarea de grafica (inclusiv text);
desenarea intr-un Panel se face prin extinderea clase JPanel si redefinirea metodei paintComponent() pentru a specifica modul de desenare; desenarea consta in afisarea de siruri, forme geometrice sau imagini.
![Page 10: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/10.jpg)
Desenarea de figuri geometrice - 1
declaratia metodei paintComponent este:
public void paintComponent(Graphics g) paintComponent trebuie sa contina toate instructiunile de
desenare, iar metoda este apelata automat la prima afisare a componentei;
obiectul g de tipul Graphics este creat automat de Java. acest obiect stocheaza si controleaza modul in care informatiile
sunt desenate:
g.drawLine(x1,y1,x2,y2);
g.drawRect(x0,y0,width,height); clasa Graphics este primitiva, pentru grafica exista clasa
Graphics2D mai evoluata, ce o extinde pe prima; Swing, la fiecate aple de paintComponent transfera ca parametru pe Graphics2D; Graphics2D are metoda draw() pentru afisarea unui obiect eometric si fill() pentru umplerea lui cu culoarea curenta.
![Page 11: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/11.jpg)
Desenarea de figuri geometrice - 2
linie:g.drawLine(x1, y1, x2, y2);
dreptunghi:g.drawRect(x, y, w, h);
g.fillRect(x, y, w, h);
elipsa:g.drawOval(x, y, w, h);
g.fillOval(x, y, w, h);
arc:g.drawArc(x, y, w, h, unghi1, unghi2);
g.fillArc(x, y, w, h, unghi1, unghi2);
text:g.drawString(”text…”);
poligon:int[] x = {30, 50, 58, 47, 21};
int[] y = {19, 44, 84, 45, 67};
Polygon poly = new Polygon(x,y,5);
g.drawPolygon(poly);
g.fillPolygon(poly);
(x1 , y1)
(x2 , y2) (x, y)
w
h
(x, y)
w
h
(x, y)
w
h unghi1
unghi 2
![Page 12: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/12.jpg)
Culori
culorile se definesc cu clasa Color, Color c = new Color(r, g, b); unde r,g, si b specifica componentele de rosu, verde si albastru din culoare;
urmatoarele metode se pot folosi pentru setarea fondului (background) si culorii (foreground) de desenare:
setBackground(Color c);
setForeground(Color c); Exemplu:
setBackground(Color.red);
setForeground(Color.blue);
![Page 13: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/13.jpg)
Intrebari
1. Comparati Frame-ul si Panel-ul.2. Afisati un Frame care sa aiba titlul “Salutare …”.3. Descrieti procedura prin care se utilizeaza JPanelul
pentru afisarea de obiecte geometrice?4. Cum se deseneaza un patrat?5. Cum se deseneaza un cerc?
![Page 14: C10 – LPO: Primitie grafice 2D](https://reader033.vdocuments.pub/reader033/viewer/2022061614/56814fa8550346895dbd65c9/html5/thumbnails/14.jpg)
Bibliografie
1. http://www.oracle.com/technetwork/java/javase/documentation/index.html
2. http://docs.oracle.com/javase/6/docs/
3. Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4.
4. Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9.
5. Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7.
6. http://www.east.utcluj.ro/mb/mep/antal/downloads.html