Рисуем треугольник в Java

В прошлой статье я писал, как нарисовать круг в Java, сегодня решил продолжить тему и написать как рисовать треугольник в Java. Мы будем использовать AWT (Abstract Window Component Toolkit), один из первых пакетов разработки Java для графических приложений. Swing - это новый набор виджетов GUI для Java, основанный на AWT и имеющий больше функциональности.

Используем java.awt и javax.swing с Path2D для рисования треугольника в Java

Используем JFrame в классе main для создания главного окна, где добавляются компоненты, такие как кнопки, текстовые поля, для создания GUI (графического пользовательского интерфейса). Класс Draw_A_Triangle расширяет JPanel, который является легким контейнером, используемым для организации компонентов GUI. JPanel добавляется к JFrames с помощью метода frame.add().

Класс Triangle_Shape расширяет класс Path2D, который представляет собой простую, но гибкую форму, представляющую произвольный геометрический путь. Мы размещаем первую точку с помощью метода moveTo() и дополнительные точки с помощью метода LineTo(). Метод close() гарантирует правильное закрытие треугольника.

Метод paintComponent() вызывается автоматически при создании панели или когда пользователь делает что-то в пользовательском интерфейсе, что требует перерисовки. Graphics2D обеспечивает больше контроля над управлением цветами, геометрией и макетом текста. Наконец, мы используем g2d и вызываем draw для рисования треугольника.

import javax.swing.*; import java.awt.*; import java.awt.geom.Path2D; import java.awt.geom.Point2D; public class Draw_A_Triangle extends JPanel { public void paintComponent(Graphics g) { Triangle_Shape triangleShape = new Triangle_Shape(new Point2D.Double(50, 0), new Point2D.Double(100, 100), new Point2D.Double(0, 100)); Graphics2D g2d = (Graphics2D) g.create(); g2d.draw(triangleShape); } public static void main (String [] args){ JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Draw Triangle"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBackground(Color.white); frame.setSize(200, 200); Draw_A_Triangle panel = new Draw_A_Triangle(); frame.add(panel); frame.setVisible(true); } } class Triangle_Shape extends Path2D.Double { public Triangle_Shape(Point2D... points) { moveTo(points[0].getX(), points[0].getY()); lineTo(points[1].getX(), points[1].getY()); lineTo(points[2].getX(), points[2].getY()); closePath(); } }

Результат:

Рисуем треугольник в Java

Используем java.awt, javax.swing и drawPolygon для рисования треугольника в Java

Используем JFrame для создания верхнего контейнера, а затем добавляем панель, которая является нашим классом DrawATriangle, расширяющим JPanel.

Как показано в коде ниже, мы вызываем метод drawPolygon внутри paintComponent для создания треугольника на объекте Graphics g.

Метод drawPolygon(int x[], int y[], int numOfPoints) рисует контур полигона согласно координатам, указанным в массивах x[] и y[]. numOfPoints указывает количество точек, в случае треугольника их 3.

import java.awt.*; import javax.swing.*; public class DrawATriangle extends JPanel { public void paintComponent(Graphics g) { int [] x = {50,100,0}; int [] y = {0,100,100}; g.drawPolygon(x, y, 3); } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Draw a Polygon"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBackground(Color.white); frame.setSize(300, 200); DrawATriangle panel = new DrawATriangle(); frame.add(panel); frame.setVisible(true); } }

Результат:

Рисуем треугольник в Java

Рисование треугольника с помощью drawLine() в Java

В классе DrawTriangle мы расширяем JComponent, чтобы использовать компоненты Swing, такие как paintCompnent() и JFrame. Мы переопределяем paintComponent(Graphics g) с параметром Graphics g, который мы можем использовать для вызова нескольких функций рисования.

Вызываем метод drawLine() для рисования линии. Так как мы хотим создать треугольник из трех линий, нам нужно вызвать drawLine() три раза. drawLine() принимает четыре аргумента: координаты x и y как для первой, так и для второй точки линии.

Метод getPreferredSize() вызывается с возвращаемым типом Dimension, чтобы указать размеры окна. Наконец, чтобы отобразить треугольник, мы создаем объект JFrame в методе main и добавляем к нему объект класса DrawTriangle. Обратите внимание, что нам нужно вызвать jFrame.setVisible(true), так как фрейм изначально невидим.

import javax.swing.*; import java.awt.*; public class DrawTriangle extends JComponent { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(120, 130, 280, 130); g.drawLine(120, 130, 200, 65); g.drawLine(200, 65, 280, 130); } public Dimension getPreferredSize() { return new Dimension(500, 300); } public static void main(String[] args) { JFrame jFrame = new JFrame(); jFrame.add(new DrawTriangle()); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.pack(); jFrame.setVisible(true); } }

Результат:

Рисуем треугольник в Java
1
Начать дискуссию