Java2D: Увеличить ширину линии

Я хочу увеличить ширину Line2D. Я не мог найти никакого способа сделать это. Нужно ли мне для этого делать небольшой прямоугольник?

Ответ 1

Вы должны использовать setStroke для установки штриха объекта Graphics2D.

Пример в http://www.java2s.com дает несколько примеров кода.

Следующий код создает изображение ниже:

import java.awt.*;
import java.awt.geom.Line2D;
import javax.swing.*;

public class FrameTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("Demo");
        Container cp = jf.getContentPane();
        cp.add(new JComponent() {
            public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.setStroke(new BasicStroke(10));
                g2.draw(new Line2D.Float(30, 20, 80, 90));
            }
        });
        jf.setSize(300, 200);
        jf.setVisible(true);
    }
}

enter image description here

(Обратите внимание, что метод setStroke недоступен в объекте Graphics. Вы должны передать его объекту Graphics2D.)


Это сообщение было переписано как статья здесь.

Ответ 2

Что такое Stroke:

Класс BasicStroke определяет базовый набор атрибутов рендеринга для контуров графических примитивов, которые визуализируются с помощью объекта Graphics2D, для атрибута Stroke которого установлено значение BasicStroke.

https://docs.oracle.com/javase/7/docs/api/java/awt/BasicStroke.html

Обратите внимание, что параметр Stroke:

Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(10));

устанавливает ширину линии, так как BasicStroke(float width):

Создает сплошной BasicStroke с указанной шириной линии и значениями по умолчанию для верхних и нижних стилей.

И это также влияет на другие методы, такие как Graphics2D.drawLine(int x1, int y1, int x2, int y2) и Graphics2D.drawRect(int x, int y, int width, int height):

Методы интерфейса Graphics2D, использующие Shape outline, возвращаемые объектом Stroke, включают draw и любые другие методы, реализованные в терминах этого метода, такие как drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline и drawPolygon.