我想增加Line2D宽度。我找不到任何方法可以做到这一点。为此,我是否需要实际制作一个小矩形?
Answers:
您应该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
对象。)
这篇文章在这里已被重写为文章。
什么是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)
:
构造一个具有指定线宽以及cap和join样式的默认值的坚实BasicStroke。
而且,它还会影响其他方法,例如Graphics2D.drawLine(int x1, int y1, int x2, int y2)
和Graphics2D.drawRect(int x, int y, int width, int height)
:
使用由Stroke对象返回的轮廓Shape的Graphics2D接口的方法包括draw和根据该方法实现的任何其他方法,例如drawLine,drawRect,drawRoundRect,drawOval,drawArc,drawPolyline和drawPolygon。
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)