• Nie Znaleziono Wyników

/* Ćwiczenie 8.1 sem.2 GRAFIKA I.

N/A
N/A
Protected

Academic year: 2021

Share "/* Ćwiczenie 8.1 sem.2 GRAFIKA I."

Copied!
4
0
0

Pełen tekst

(1)

/* Ć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[]) { //

}}

(2)

/* Ć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[]) { //

} }

(3)

/* Ć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);

(4)

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

} }

}

Cytaty

Powiązane dokumenty

[r]

[r]

[r]

Celem ćwiczenia jest pomiar zaleŜności współczynnika załamania światła od ciśnienia dla powietrza w danej temperaturze.. Zamocować kuwetę czerwoną kropką w stronę okularu

Terminy seminarium i laboratorium magisterskiego zostaną ustalone w późniejszym okresie w porozumieniu z promotorem.. Metodologia gospodarki

W przypadku źródła napięcia idealnego, woltomierz zmierzy spadek napięcia wyłącznie na swojej rezystancji wewnętrznej... Juliusz

W pomiarze okresu średniego, czas otwarcia bramki w częstościomierzu równy jest wielokrotności czasu trwania jednego okresu sygnału zgodnie z zależnością... W

Polece- niem Szyk  Wzdłuż krzywej powiel go 6 razy wzdłuż łuku (typ: Dopasuj; transforma- cja: Liniowa) a następnie całość (wzór po krzywej i otwór) powiel