Java2D:增加行宽

2022-08-31 11:37:25

我想增加 Line2D 宽度。我找不到任何方法来做到这一点。为此,我是否需要实际制作一个小矩形?


答案 1

应 使用 来设置对象的笔触。setStrokeGraphics2D

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

(请注意,该方法在对象中不可用。您必须将其强制转换为对象。setStrokeGraphicsGraphics2D


这篇文章已经重写为一篇文章在这里


答案 2

什么:Stroke

BasicStroke 类为图形基元的轮廓定义一组基本的呈现属性,这些属性使用其 Stroke 属性设置为此 BasicStroke 的 Graphics2D 对象进行渲染。

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)

构造具有指定线宽的实体基本描边,并具有端点和连接样式的默认值。

而且,它还会影响其他方法,例如 和 :Graphics2D.drawLine(int x1, int y1, int x2, int y2)Graphics2D.drawRect(int x, int y, int width, int height)

使用 Stroke 对象返回的轮廓形状的 Graphics2D 界面的方法包括 draw 以及根据该方法实现的任何其他方法,如 drawLine、drawRect、drawRoundRect、drawOval、drawArc、drawPolyline 和 drawPolygon。


推荐