Graphics2D 修改线的宽度
时间: 2023-10-10 17:14:59 浏览: 64
要修改线的宽度,可以使用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文件。
ava使用Graphics2D刻画六边形菱形蛛网图,样式类似游戏人物属性能力图,所有能力项再在蛛网图内绘制一幅图
好的,让我来解答你的问题。
首先,我们需要了解一下绘制蛛网图的原理。蛛网图也叫雷达图,是一种用于表现多个变量之间关系的图表。它通过一个中心点和多条与之相连的轴线来表示多个变量,并在轴线上标出刻度,然后连接各个刻度所对应的点来形成一个多边形,代表多个变量的相对大小。
在Java中,我们可以使用Graphics2D类来绘制蛛网图。具体步骤如下:
1. 创建一个继承自JPanel的自定义面板类,用于绘制蛛网图和其它图形。
2. 在paintComponent()方法中,获取Graphics2D对象,并设置绘图属性,如颜色、线条粗细等。
3. 计算出所有轴线的坐标,并将其连接起来,形成一个多边形。
4. 根据数据,计算出各个数据点的坐标,并将其绘制在轴线上。
5. 最后,绘制能力项的图形。
这是一个简单的代码示例,可以用来绘制六边形蛛网图:
```
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import javax.swing.JPanel;
public class SpiderWebPanel extends JPanel {
private int width = 400; // 面板宽度
private int height = 400; // 面板高度
private int centerX = width / 2; // 中心点X坐标
private int centerY = height / 2; // 中心点Y坐标
private int axisNum = 6; // 轴线数量
private int[] data = { 4, 3, 2, 4, 5, 3 }; // 数据数组
private String[] labels = { "力量", "敏捷", "体质", "智力", "精神", "幸运" }; // 标签数组
// 获取多边形的顶点坐标
private Point[] getPolygonPoints(int n, int r) {
Point[] points = new Point[n];
double angle = 2 * Math.PI / n;
for (int i = 0; i < n; i++) {
int x = (int) (centerX + r * Math.cos(angle * i));
int y = (int) (centerY + r * Math.sin(angle * i));
points[i] = new Point(x, y);
}
return points;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLACK);
g2d.setStroke(new BasicStroke(2));
// 绘制轴线
Point[] points = getPolygonPoints(axisNum, 150);
for (int i = 0; i < axisNum; i++) {
g2d.drawLine(centerX, centerY, points[i].x, points[i].y);
}
// 绘制多边形
Polygon polygon = new Polygon();
for (int i = 0; i < axisNum; i++) {
int x = (int) (centerX + data[i] * 150 / 5 * Math.cos(2 * Math.PI / axisNum * i));
int y = (int) (centerY + data[i] * 150 / 5 * Math.sin(2 * Math.PI / axisNum * i));
polygon.addPoint(x, y);
}
g2d.drawPolygon(polygon);
// 绘制数据点
for (int i = 0; i < axisNum; i++) {
int x = (int) (centerX + data[i] * 150 / 5 * Math.cos(2 * Math.PI / axisNum * i));
int y = (int) (centerY + data[i] * 150 / 5 * Math.sin(2 * Math.PI / axisNum * i));
g2d.fillOval(x - 4, y - 4, 8, 8);
}
// 绘制标签
for (int i = 0; i < axisNum; i++) {
int x = (int) (centerX + 160 * Math.cos(2 * Math.PI / axisNum * i));
int y = (int) (centerY + 160 * Math.sin(2 * Math.PI / axisNum * i));
g2d.drawString(labels[i], x, y);
}
// 绘制能力项图形
// TODO
}
}
```
这个示例可以绘制出一个六边形蛛网图,并在其中绘制了数据点和标签。你可以根据自己的需求修改其中的数据和绘图代码,来实现自己的功能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)