C10 – LPO: Primitie grafice 2D

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

description

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; - PowerPoint PPT Presentation

Transcript of C10 – LPO: Primitie grafice 2D

Page 1: C10 – LPO: Primitie grafice 2D

C10 – LPO: Primitie grafice 2D

CUPRINS

JFrame JPanel 2D:

coorodate linie dreptunghi, patrat elipsa, cerc text poligon.

Page 2: C10 – LPO: Primitie grafice 2D

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

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

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

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

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

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

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

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

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

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

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

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

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