Java2D:如何增加线条宽度

89

我想增加Line2D的宽度,但找不到任何方法来做到这一点。我需要为此创建一个小矩形吗?

2个回答

185
你应该使用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

5
什么是Stroke:

BasicStroke类定义了一组基本的渲染属性,用于绘制图形原语的轮廓,这些原语使用将其Stroke属性设置为此BasicStrokeGraphics2D对象进行渲染。

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接口中使用Stroke对象返回的轮廓Shape的方法包括draw和任何其他基于该方法实现的方法,例如drawLine、drawRect、drawRoundRect、drawOval、drawArc、drawPolyline和drawPolygon。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接