Я хочу увеличить ширину Line2D. Я не мог найти никакого способа сделать это. Нужно ли мне для этого делать небольшой прямоугольник?
Ответы:
Вы должны использовать 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);
}
}
(Обратите внимание, что setStroke
метод недоступен в Graphics
объекте. Вы должны привести его к Graphics2D
объекту.)
Это сообщение было переписано как статья здесь .
Что есть 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, возвращаемый объектом Stroke, включают draw и любые другие методы, реализованные в терминах этого метода, такие как drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline и drawPolygon.
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)