Java2D:增加线宽

问题描述 投票:0回答:2

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

java swing graphics java-2d
2个回答
188
投票

您应该使用

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
对象。)


6
投票
什么是

Stroke

:

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

:

使用指定的线宽以及端点和连接样式的默认值构造一个实心 BasicStroke。

并且,它还会影响其他方法,例如

Graphics2D.drawLine(int x1, int y1, int x2, int y2)

Graphics2D.drawRect(int x, int y, int width, int height)
:

Graphics2D接口中使用轮廓Shape的方法 Stroke 对象返回的内容包括绘制和任何其他方法 都是按照该方法实现的,例如drawLine,drawRect, drawRoundRect、drawOval、drawArc、drawPolyline 和 drawPolygon。

© www.soinside.com 2019 - 2024. All rights reserved.