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


81

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

Ответы:


166

Вы должны использовать 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объекту.)


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


28
+1 за иллюстрацию! Также g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
учтите

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, возвращаемый объектом Stroke, включают draw и любые другие методы, реализованные в терминах этого метода, такие как drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline и drawPolygon.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.