/* Ćwiczenie 8.1 sem.2 GRAFIKA
I. Ilustracja metod rysujących podstawowe elementy graficzne*/
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Polygon;
import java.util.Random;
public class Grafika extends javax.swing.JFrame { public Grafika() { // konstruktor klasy Grafika initComponents();
setSize(500, 500); //zmiana rozmiaru okna setBackground(Color.white);
}
public void paint (Graphics g) {
Font f = new Font("SanSerif", Font.ITALIC, 16); //
utworzenie czcionki o podanej nazwie, // stylu i rozmiarze
g.setFont(f); //przypisanie czcionki do kanwy g.clearRect(0, 0, getWidth(), getHeight());
g.setColor(Color.red);
g.drawLine(0, getHeight() / 2, getWidth(), getHeight() / 2); //czerwona linia g.setColor(Color.magenta); g.drawRect(30, 70, 80, 90); // ramka prostokąta g.drawString("prostokąt", 30, 200);
g.fillRect(30, 70 + getHeight() / 2, 80, 90); // wypełniony prostokąt g.setColor(Color.red); g.drawOval(getWidth() / 2 - 40, 70, 80, 90);
g.fillOval(getWidth() / 2 - 40, 70 + getHeight() / 2, 80, 90);
g.drawString("elipsa", getWidth() / 2 - 30, 200);
Color k1 = new Color(36, 36, 255); g.setColor(k1);
g.drawArc(getWidth() / 2 - 40, 70, 80, 90, 45, 85);
g.fillArc(getWidth() / 2 - 40, 70 + getHeight() / 2, 80, 90, 45, 85);
Random r = new Random();
Color k2 = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
g.setColor(k2);
Polygon p = new Polygon();
double alfa = 2 * Math.PI / 8;
int x0 = getWidth() - 100, y0 = 120; // (x0,y0) -środek koła opisanego na wieloboku for (int i = 0; i < 8; i++) {
// wierzchołki ośmiokąta foremnego wpisanego w koło o promieniu 50 i środku (x0, y0)
p.addPoint(x0 + (int) (50 * Math.cos(i * alfa)), y0 + (int) (50 * Math.sin(i * alfa)));
}
g.drawPolygon(p); g.drawString("wielobok", getWidth() - 130, 200);
p.translate(0, getHeight() / 2); // przesunięcie obiektu p o wektor[0, getHeight()/2]
g.fillPolygon(p);
int[] x = {0, getWidth() / 2, getWidth()}; //tablica współrzędnych x wierzchołków trójkąta int[] y = {0, 60, 0}; // tablica zawierająca współrzędne y wierzchołków trójkąta Color k3 = new Color(255, 200, 230); g.setColor(k3);
g.fillPolygon(x, y, 3); //rysowanie wieloboku o 3 wierzchołkach zapisanych w tablicach x i y g.setColor(Color.black); g.drawPolygon(x, y, 3);
String s = "Rysowanie figur geometrycznych";
int z = getWidth() / 2 - g.getFontMetrics().stringWidth(s) / 2;
g.drawString(s, z, 20); // tekst s będzie wyświetlony na środku szerokości ramki }
}
public static void main(String args[]) { //
}}
/* Ćwiczenie 8.2 sem.2 GRAFIKA
II.
Wykres słupkowy*/
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;
public class Wykres extends javax.swing.JFrame { Random r = new Random();
int [] t= new int [10];
public Wykres() { //konstruktor klasy Wykres initComponents();
setSize(450,300);
}
public void paint(Graphics g) { super.paint(g);
int sz = getWidth();
int ws = getHeight();
Font f = new Font("SanSerif", Font.ITALIC, 16);
g.setFont(f);
g.setColor(Color.lightGray);
g.fillRect(0, 0, sz, ws);
int d = sz / 10; // szerokość każdego słupka wykresu for (int i = 0; i < 10; i++) {
t[i] = 1 + r.nextInt(20); // pobranie z tablicy i-tej wartości
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
int h = (ws - 30) * t[i] / 20; // wysokość i-tego słupka wykresu
g.fillRect(i * d, ws - h, d, h); // i*d – odległość i-tego prostokąta od lewej krawędzi panelu, //ws – h-odległość od dolnej krawędzi panelu, d,h-szerokość, wysokość prostokąta g.setColor(Color.black);
g.drawString(t[i] + "", i * d + 10, ws - h / 2); }
public static void main(String args[]) { //
} }
/* Ćwiczenie 10 sem.2 GRAFIKA III wczytywanie grafiki z pliku */
public class Rysunek extends javax.swing.JFrame { Image tło, samochód, autobus;
/**
* Creates new form Rysunek */
public Rysunek() { initComponents();
setSize(800, 500);
tło = new ImageIcon("tło.jpg").getImage();
samochód = new ImageIcon("samochod.png").getImage();
autobus = new ImageIcon("autobus.png").getImage();
}
@Override
public void paint(Graphics g) {
super.paint(g); //To change body of generated methods, choose Tools | Templates.
int sz = getWidth();
int ws = getHeight();
g.drawImage(tło, 0, 0, this);
int szer_drogi = 100;
g.setColor(Color.GRAY);
g.fillRect(0, 400, sz, szer_drogi);
g.setColor(Color.BLACK);
g.drawLine(0, 400, sz, 400);
g.drawLine(0, 400 + szer_drogi, sz, 400 + szer_drogi);
g.setColor(Color.WHITE);
for (int i = 0; i < 6; i++) {
g.fillRect(250 - i * 10, 400 + i * szer_drogi / 6, 80, 8);
}
g.drawImage(samochód, 0, 400, this);
g.drawImage(autobus, 420, 380, 240, 80, this);
int xs = 100, ys = 100;
g.setColor(Color.YELLOW);
for (int i = 0; i < 18; i++) {
g.fillArc(xs - 60, ys - 60, 120, 120, i * 360 / 18, 360 / 18 - 10);
}
g.setColor(Color.ORANGE);
g.fillOval(xs - 20, ys - 20, 40, 40);
rysujBudynek(Color.MAGENTA, 300, 200, 80, 180, g);
rysujBudynek(Color.GREEN, 400, 170, 90, 200, g);
rysujBudynek(Color.YELLOW, 550, 240, 60, 120, g);
}
private void rysujBudynek(Color k, int x, int y, int szer, int wys, Graphics g) { g.setColor(k);
g.fillRect(x, y, szer, wys);
g.setColor(Color.BLACK);
g.drawRect(x, y, szer, wys);
int szer_okna = szer / 2;
int wys_okna = wys / 5;
g.setColor(new Color(206,248, 255));
for (int i = 0; i < 5; i++) { // piętra for (int j = 0; j < 2; j++) {
g.fillRoundRect(x + j * szer_okna + 5, y + i * wys_okna + 5, szer_okna - 10, wys_okna - 10, 5, 5);
} }
}