使用Swing中的角度绘制弧

时间:2015-01-30 10:20:27

标签: java swing

我为每个角度设置了0到360度的值。现在我想把面板上的一些坐标作为ORIGIN并使用for循环我想根据角度及其相对于原点的值来绘制图形。

例如:

for(int angle=0 ; angle< 360; angle++){
   graphics.draw(origin, angle, value[angle]);
}

我是Swings的新手,基于我的学习和在互联网上搜索,我找到了如何为给定的2点绘制弧线的解决方案但在我的例子中我需要从原点绘制线条,从原点到我的角度和长度积分取决于value[angle]

有人可以提供一些指示,说明我们如何使用Java Swings实现这一目标?

例如,图像看起来像这样。我输入为(角度,长度) - (0,5),(30,7),(85,4)

enter image description here

1 个答案:

答案 0 :(得分:2)

我猜你需要从一个点到另一个点画一条线;我认为你不想绘制弧线。

会是这样的:

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);