Java Language
Grafika 2D w Javie
Szukaj…
Wprowadzenie
Grafika to obrazy lub projekty wizualne na niektórych powierzchniach, takie jak ściana, płótno, ekran, papier lub kamień, które służą do informowania, ilustrowania lub rozrywki. Obejmuje to: obrazową reprezentację danych, jak w komputerowym projektowaniu i produkcji, w składzie i grafice oraz w oprogramowaniu edukacyjnym i rekreacyjnym. Obrazy generowane przez komputer nazywane są grafiką komputerową.
Java 2D API jest potężny i złożony. Istnieje wiele sposobów tworzenia grafiki 2D w Javie.
Przykład 1: Narysuj i wypełnij prostokąt za pomocą Java
To jest przykład, w którym drukuje prostokąt i wypełnia kolor w prostokącie. https://i.stack.imgur.com/dlC5v.jpg
Większość metod klasy Graphics można podzielić na dwie podstawowe grupy:
- Metody rysowania i wypełniania, umożliwiające renderowanie podstawowych kształtów, tekstu i obrazów
- Atrybuty ustawiają metody, które wpływają na wygląd tego rysunku i wypełnienia
Przykład kodu: Zacznijmy od małego przykładu narysowania prostokąta i wypełnienia go kolorem. Tam deklarujemy dwie klasy, jedna klasa to MyPanel, a druga klasa to Test. W klasie MyPanel używamy matematyki drawRect () i fillRect () do rysowania prostokąta i wypełniania w nim Kolor. Ustawiamy kolor metodą setColor (Color.blue). W drugiej klasie testujemy naszą grafikę, która jest klasą testową, tworzymy ramkę i umieszczamy w niej MyPanel z p = new MyPanel (). Po uruchomieniu klasy testowej widzimy prostokąt i prostokąt wypełniony kolorem niebieskim.
Pierwsza klasa: MyPanel
import javax.swing.*;
import java.awt.*;
// MyPanel extends JPanel, which will eventually be placed in a JFrame
public class MyPanel extends JPanel {
// custom painting is performed by the paintComponent method
@Override
public void paintComponent(Graphics g){
// clear the previous painting
super.paintComponent(g);
// cast Graphics to Graphics2D
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red); // sets Graphics2D color
// draw the rectangle
g2.drawRect(0,0,100,100); // drawRect(x-position, y-position, width, height)
g2.setColor(Color.blue);
g2.fillRect(200,0,100,100); // fill new rectangle with color blue
}
}
Druga klasa: test
import javax.swing.;
import java.awt.;
public class Test { //the Class by which we display our rectangle
JFrame f;
MyPanel p;
public Test(){
f = new JFrame();
// get the content area of Panel.
Container c = f.getContentPane();
// set the LayoutManager
c.setLayout(new BorderLayout());
p = new MyPanel();
// add MyPanel object into container
c.add(p);
// set the size of the JFrame
f.setSize(400,400);
// make the JFrame visible
f.setVisible(true);
// sets close behavior; EXIT_ON_CLOSE invokes System.exit(0) on closing the JFrame
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[ ]){
Test t = new Test();
}
}
Więcej informacji na temat układu granicy: https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
paintComponent ()
- Jest to główna metoda malowania
- Domyślnie najpierw maluje tło
- Następnie wykonuje niestandardowe malowanie (okrąg rysunkowy, prostokąty itp.)
Graphic2D odnosi się do klasy Graphic2D
Uwaga: Java 2D API umożliwia łatwe wykonywanie następujących zadań:
- Rysuj linie, prostokąty i każdy inny kształt geometryczny.
- Wypełnij te kształty jednolitymi kolorami lub gradientami i teksturami.
- Narysuj tekst z opcjami dokładnej kontroli nad czcionką i procesem renderowania.
- Rysuj obrazy, opcjonalnie stosując operacje filtrowania.
- Zastosuj operacje, takie jak komponowanie i przekształcanie podczas dowolnej z powyższych operacji renderowania.
Przykład 2: Rysowanie i wypełnianie owalne
import javax.swing.*;
import java.awt.*;
public class MyPanel extends JPanel {
@Override
public void paintComponent(Graphics g){
// clear the previous painting
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.blue);
g2.drawOval(0, 0, 20,20);
g2.fillOval(50,50,20,20);
}
}
g2.drawOval (int x, int y, int height, int width);
Ta metoda narysuje owal w określonej pozycji xiy o podanej wysokości i szerokości.
g2.fillOval (int x, int y, int height, int width); Ta metoda wypełni owal w określonej pozycji xiy o określonej wysokości i szerokości.