Graphics2D 修改线的宽度
时间: 2023-10-10 21:14:59 浏览: 109
要修改线的宽度,可以使用Graphics2D类中的setStroke方法。例如,以下代码将线的宽度设置为3像素:
```
Graphics2D g2d = (Graphics2D) g;
Stroke stroke = new BasicStroke(3);
g2d.setStroke(stroke);
```
在这个例子中,g是Graphics对象,可以从paintComponent方法的参数中获取。setStroke方法需要一个Stroke对象作为参数,可以使用BasicStroke类创建一个Stroke对象,并指定线的宽度。设置完Stroke对象后,再使用Graphics2D对象的drawLine方法绘制线即可。
相关问题
Java使用Graphics2D刻画六边形菱形蛛网图,并根据动态数据刻画蛛网图里面的线相关联,可更改蛛网图的颜色并生成图片,包含pom文件
好的,我了解了您的问题。以下是Java使用Graphics2D刻画六边形菱形蛛网图的示例代码,您可以根据您的需求进行修改:
```java
import java.awt.*;
import java.awt.geom.Line2D;
import java.awt.geom.Path2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class SpiderWeb {
private static final int WIDTH = 800; // 图片宽度
private static final int HEIGHT = 800; // 图片高度
private static final int CENTER_X = WIDTH / 2; // 图片中心点横坐标
private static final int CENTER_Y = HEIGHT / 2; // 图片中心点纵坐标
private static final int RADIUS = 300; // 六边形外接圆半径
private static final int EDGE_NUM = 6; // 六边形边数
private static final int LINE_NUM = 5; // 蛛网线数
private static final int LINE_COLOR = 0x000000; // 蛛网线颜色
public static void main(String[] args) {
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setBackground(Color.WHITE);
g2d.clearRect(0, 0, WIDTH, HEIGHT);
// 绘制六边形
Path2D hexagon = new Path2D.Double();
double angle = Math.PI / 6; // 六边形内角
double x, y;
for (int i = 0; i < EDGE_NUM; i++) {
x = CENTER_X + RADIUS * Math.cos(angle * (2 * i + 1));
y = CENTER_Y + RADIUS * Math.sin(angle * (2 * i + 1));
if (i == 0) {
hexagon.moveTo(x, y);
} else {
hexagon.lineTo(x, y);
}
}
hexagon.closePath();
g2d.draw(hexagon);
// 绘制蛛网线
double step = RADIUS / (LINE_NUM - 1);
for (int i = 0; i < LINE_NUM; i++) {
double radius = step * i;
Path2D webLine = new Path2D.Double();
for (int j = 0; j < EDGE_NUM; j++) {
x = CENTER_X + radius * Math.cos(angle * (2 * j + 1));
y = CENTER_Y + radius * Math.sin(angle * (2 * j + 1));
if (j == 0) {
webLine.moveTo(x, y);
} else {
webLine.lineTo(x, y);
}
}
webLine.closePath();
g2d.setColor(new Color(LINE_COLOR));
g2d.draw(webLine);
}
// 保存图片
File file = new File("spiderweb.png");
try {
ImageIO.write(image, "png", file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
如果您需要根据动态数据刻画蛛网图里面的线相关联,可以在绘制蛛网线的for循环中根据数据计算线的起点和终点坐标,并绘制线段。如果需要更改蛛网图的颜色,可以修改LINE_COLOR的值为需要的颜色值。如果需要生成pom文件,您可以使用Maven来管理项目并生成pom文件。
怎么修改这段代码,使其能用GUI导入图片代替文字“猫”protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Font font = new Font("楷体", Font.PLAIN, getWidth() / 2); g2.setFont(font); g2.setColor(owner.getColor()); g2.drawString("猫", getWidth() / 4, getHeight() * 5 / 8); // FIXME: Use library to find the correct offset. if (isSelected()) { // Highlights the model if selected. g.setColor(Color.RED); g.drawOval(0, 0, getWidth() , getHeight()); } }
可以将文字“猫”替换为导入的图片。具体步骤如下:
1. 在类的属性中添加一个 BufferedImage 类型的变量 image,用于存储导入的图片。
2. 在类的构造函数或初始化方法中,使用 ImageIO.read() 方法加载图片并赋值给 image 变量。
3. 在 paintComponent() 方法中,使用 g2.drawImage() 方法绘制图片,替代原来的绘制文字的代码。具体代码如下:
```
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (image != null) { // 判断是否有导入的图片
g2.drawImage(image, 0, 0, getWidth(), getHeight(), null);
}
if (isSelected()) { // Highlights the model if selected.
g.setColor(Color.RED);
g.drawOval(0, 0, getWidth(), getHeight());
}
}
```
注意:这段代码中使用了 getWidth() 和 getHeight() 方法获取组件的宽度和高度,所以在使用前需要确保组件已经被添加到容器中并且已经设置了正确的大小。
阅读全文