如何绘制弧线?

时间:2012-02-04 16:25:29

标签: java user-interface

我试图绘制一个圆弧 - 只是一个从点(x1,y1)到点(x2,y2)的简单弧形

我该怎么做?

我一直在使用如此复杂而不是freindly的方法来调用Graphics类中的drawArc。没有运气了。

这就是我的尝试:

void drawArc(Graphics2D g, int x1, int y1, int x2, int y2) {
AffineTransform prev = g.getTransform();
    double dx = x2 - x1, dy = y2 - y1;
    double angle = Math.atan2(dy, dx);
    int len = (int) Math.sqrt(dx*dx + dy*dy);
    AffineTransform at = AffineTransform.getTranslateInstance(x1, y1);
    at.rotate(angle);
    g.transform(at);
    g.drawArc(len/2, len/2, len ,len/2, 0, 60);
    g.setTransform(prev);
}

非常感谢。

1 个答案:

答案 0 :(得分:2)

graphics.drawLine(x1,y1,x2,y2)是您可以使用这些信息绘制的最简单的arc

可能不是你想要的。如果你想要更多......弯曲的东西,你需要以某种方式定义它是多么弯曲。 drawArc方法要求您计算接触两个点的椭圆。弧是这些点之间的圆的一部分。有无数个可能的椭圆。 (drawLine示例假定无限椭圆。)但这需要更多信息(选择椭圆)和一些计算。

如果你想在两点和控制点(你可能想要的)之间绘制曲线,你需要查看QuadCurve2DCubicCurve2DdrawShape。您可以找到示例代码here