Java2D:增加线宽

时间:2010-05-15 08:45:43

标签: java swing graphics java-2d

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

2 个答案:

答案 0 :(得分:154)

您应该使用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);
    }
}

enter image description here

(请注意,setStroke对象中没有Graphics方法。您必须将其强制转换为Graphics2D对象。)


此帖子已被重写为文章here

答案 1 :(得分:1)

什么是Stroke

  

BasicStroke类定义了一组基本的渲染属性,用于   图形基元的轮廓,用   将Stroke属性设置为此的Graphics2D对象   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)

  

使用轮廓Shape的Graphics2D接口的方法   由Stroke对象返回的内容包括draw和任何其他方法   是根据该方法实现的,例如drawLine,drawRect,   drawRoundRect,drawOval,drawArc,drawPolyline和drawPolygon。