我试图绘制一个圆弧 - 只是一个从点(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);
}
非常感谢。
答案 0 :(得分:2)
graphics.drawLine(x1,y1,x2,y2)
是您可以使用这些信息绘制的最简单的arc。
可能不是你想要的。如果你想要更多......弯曲的东西,你需要以某种方式定义它是多么弯曲。 drawArc
方法要求您计算接触两个点的椭圆。弧是这些点之间的圆的一部分。有无数个可能的椭圆。 (drawLine
示例假定无限椭圆。)但这需要更多信息(选择椭圆)和一些计算。
如果你想在两点和控制点(你可能想要的)之间绘制曲线,你需要查看QuadCurve2D或CubicCurve2D和drawShape
。您可以找到示例代码here。