1 / 14

C10 – LPO: Primitie grafice 2D

C10 – LPO: Primitie grafice 2D. CUPRINS JFrame JPanel 2D: coorodate linie dreptunghi, patrat elipsa, cerc text poligon. 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;

amy
Download Presentation

C10 – LPO: Primitie grafice 2D

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C10 – LPO: Primitie grafice 2D CUPRINS JFrame JPanel 2D: coorodate linie dreptunghi, patrat elipsa, cerc text poligon.

  2. 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.

  3. 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.

  4. Crearea unui Frame import 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); } }

  5. Crearea unui Frame in JDeveloper • File > New (Ctr+N) • apoi > , • codul generat de JDeveloper este echivalent dar nu idenic.

  6. 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" ); } }

  7. Coordonate grafice • implicit, Frame-ul are marimea inutila de 0x0 pixeli, cu metoda setSize(lungime, inaltime) modificam dimensiunile implicite; • 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).

  8. Centrarea Frame-ului import 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); } }

  9. 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.

  10. 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.

  11. 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);

  12. 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);

  13. Intrebari • Comparati Frame-ul si Panel-ul. • Afisati un Frame care sa aiba titlul “Salutare …”. • Descrieti procedura prin care se utilizeaza JPanelul pentru afisarea de obiecte geometrice? • Cum se deseneaza un patrat? • Cum se deseneaza un cerc?

  14. Bibliografie • http://www.oracle.com/technetwork/java/javase/documentation/index.html • http://docs.oracle.com/javase/6/docs/ • Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4. • Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9. • Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7. • http://www.east.utcluj.ro/mb/mep/antal/downloads.html

More Related