在 Swing 中使用角度绘制圆弧
Draw arc using angles in Swing
我为每个角度设置了一组值,范围从 0 到 360 度。现在我想在面板上取一些坐标作为原点并使用 for 循环我想根据角度及其相对于原点的值绘制图形。
例如:
for(int angle=0 ; angle< 360; angle++){
graphics.draw(origin, angle, value[angle]);
}
我是 Swings 的新手,根据我的学习和在互联网上的搜索,我找到了关于如何为给定的 2 个点绘制圆弧的解决方案,但在我的示例中,我需要从原点绘制具有角度和长度的线对我来说取决于 value[angle]
.
有人可以提供一些关于我们如何使用 Java Swings 实现此目的的指示吗?
例如图像看起来像这样。我输入为 (Angle , length) -- (0,5), (30,7), (85,4)
我猜你需要从一个点到另一个点画一条线;我觉得你不想画弧线。
会是这样的:
double x = originx;
double y = originy + value[0]*scale;
for(int angle=1 ; angle< 360; angle++){
double rad = angle*Math.PI/180.0;
double x1 = originx + value[i]*scale*Math.cos(rad);
double y1 = originy + value[i]*scale*Math.sin(rad);
graphics.drawLine(int)x, (int)y, (int)x1, (int)y1);
x = x1;
y = y1;
}
更新:
注意,如果你有一个Graphics2D,你可以先建立一个Path2D,然后在图形上绘制:
Path2D path = new Path2D.Double();
path.moveTo(0, value[0]);
for(int angle=1 ; angle< 360; angle++){
double rad = angle*Math.PI/180.0;
path.lineTo(value[i]*Math.cos(rad), value[i]*Math.sin(rad));
}
g2d.translate(originx, originy);
g2d.scale(scale, scale);
g2d.draw(path);
我为每个角度设置了一组值,范围从 0 到 360 度。现在我想在面板上取一些坐标作为原点并使用 for 循环我想根据角度及其相对于原点的值绘制图形。
例如:
for(int angle=0 ; angle< 360; angle++){
graphics.draw(origin, angle, value[angle]);
}
我是 Swings 的新手,根据我的学习和在互联网上的搜索,我找到了关于如何为给定的 2 个点绘制圆弧的解决方案,但在我的示例中,我需要从原点绘制具有角度和长度的线对我来说取决于 value[angle]
.
有人可以提供一些关于我们如何使用 Java Swings 实现此目的的指示吗?
例如图像看起来像这样。我输入为 (Angle , length) -- (0,5), (30,7), (85,4)
我猜你需要从一个点到另一个点画一条线;我觉得你不想画弧线。
会是这样的:
double x = originx;
double y = originy + value[0]*scale;
for(int angle=1 ; angle< 360; angle++){
double rad = angle*Math.PI/180.0;
double x1 = originx + value[i]*scale*Math.cos(rad);
double y1 = originy + value[i]*scale*Math.sin(rad);
graphics.drawLine(int)x, (int)y, (int)x1, (int)y1);
x = x1;
y = y1;
}
更新:
注意,如果你有一个Graphics2D,你可以先建立一个Path2D,然后在图形上绘制:
Path2D path = new Path2D.Double();
path.moveTo(0, value[0]);
for(int angle=1 ; angle< 360; angle++){
double rad = angle*Math.PI/180.0;
path.lineTo(value[i]*Math.cos(rad), value[i]*Math.sin(rad));
}
g2d.translate(originx, originy);
g2d.scale(scale, scale);
g2d.draw(path);