Grafika 2D

Transkrypt

Grafika 2D
Grafika 2D - SWING
Aby stworzyć aplikację pozwalającą na rysowanie
figur geomoetrycznych (jak również innych
elementów grafiki 2D – np. Obrazów) musimy:
● Stworzyć klasę ramki (potomek JFrame)
● Stworzyć panel na którym będziemu umieszczać
graficzne elementy. (pochodna JPanel)
● „narysować” i umieścić w panelu elementy
graficzne
● Umieścić panel w powierzchni zawartości
stworonej ramki
●Stworzyć i wyświetlić obiekt ramki.
Tworzenie ramki
public class Grafika2DRamka extends JFrame{
public Grafika2DRamka() {
setTitle("Rysunki 2D");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container k = getContentPane();
// teraz dodamy panel do kontenera,
// panel definiujemy na następnym slajdzie
PanelDoRysowania p = new PanelDoRysowania();
p.setBackground(Color.WHITE);
k.add(p);
}
}
Panel do rysowania
class PanelDoRysowania extends Jpanel{
//abyn narysować własne elementy
//przeciążamy metodę paintComponent
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D gd = (Graphics2D)g;
Ellipse2D e = new Ellipse2D.Double(100,100,100,50);
gd.draw(e);
}
}
Elementy graficzne
Wszystkie klasy podane poniżej pochodzą z pakietu java.awt.geom
(import java.awt.geom.*)
Kod oznaczony .Double (po nazwie lementu) oznacza typ argumentów jakie
będziemy przekazywali.
Istnieje również wersja używająca pojedynczej precyzji .Float
//punkt o podanych współrzędnych
Point2D.Double(double x, double y);
//linia między dwoma punktami początkiem „p” i końcem „k”
Line2D.Double(Point2D p, Point2D k);
//Elipsa o współrzędnych lewego górnego narożnika prostokąta
// „otaczającego” (x,y) oraz szerokości „s” i wysokości „w”
Ellipse2D.Double(double x, double y, double s, double w);
//Prostokąt (oznaczenia jak wyżej)
Rectangle2D.Double(double x, double y, double s, double w);
Klasa RectangularShape
Wszystkie opisywane na poprzednim slajdzie obiekty dziedziczą po
wspólnej klasie RectangularShape. Klasa ta dostarcza szereg metod
zwiazanych z „obsługą” figur geometrycznych tego typu. W skład klasy
wchodzą m. in.:
//minimalne wartości prostokąta otaczającego
double getMinX()
double getMinY()
//śrdodek prostokąta otaczającego
double getCenterX()
double getCenterY()
//maksymalne wartości prostokąta otaczającego
double getMaxX()
double getMaxY()
//rozmiar prostokąta otaczającego
getWidth()
getHeight()
Kolory
Kolor którym będzie rysowana figura wyieramy za pomocą
metody setPaint klasy Graphics2D.
Agumentem metody setPaint są obiekty klasy java.awt.Color
Color.RED – predefiniowane stale klasy Color
new Color(int r, int g, int b) – tworzenie obiektu
klasy Color
W połączeniu z metodą setPaint:
setPaint(Color.RED);
setPaint(new Color(255,255,0));
Wypełnienie
Aby wypełnić stworzoną figurę kolorem
● Wybieramy kolor wypełnienia
● Korzystamy z metody fill klasy Graphics2D
Ellipse2D el = new Ellipse2D.Double(ex0,ey0,100,100);
gd.setPaint(Color.RED);
gd.fill(el);
gd.draw(el);
Wyświetlanie obrazów
class PanelDoRysowania extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D gd = (Graphics2D)g;
Toolkit t = Toolkit.getDefaultToolkit();
Image obraz = t.getImage("img.jpg"); //tworzenie
}
MediaTracker mt = new MediaTracker(this);
mt.addImage(obraz,0);
try{
mt.waitForAll();
}catch (InterruptedException e){
e.printStackTrace();
}
gd.drawImage(obraz,0,0,null); //wyświetlanie
}

Podobne dokumenty