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)
trashgod

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 із заданою шириною рядка та зі значеннями за замовчуванням для стилів cap та join.

І це також впливає на інші методи, такі як Graphics2D.drawLine(int x1, int y1, int x2, int y2)і Graphics2D.drawRect(int x, int y, int width, int height):

Методи інтерфейсу Graphics2D, які використовують форму контуру, що повертається об’єктом Stroke, включають draw та будь-які інші методи, реалізовані з точки зору цього методу, такі як drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline та drawPolygon.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.