如何使用x,y坐标列表绘制曲线(峰值)

时间:2015-07-20 02:18:09

标签: java graphics2d curve bezier

我有一个打印的x,y点列表,显示不均匀的峰曲线。

enter image description here

上面的图像是通过在java绘制组件上绘制点来生成的。我使用以下方法在paint组件上绘制它们。

g.drawline(pointX,pointY,pointX,pointY)

有没有更好的方法来绘制这种波浪线?我检查了一些类似的问题,通常他们需要打印曲线或峰值,但我的线并不总是一个高峰,因为有时它的平面出来,有时候它们是奇怪的。

1 个答案:

答案 0 :(得分:2)

使用java.awt.Graphics绘制折线的最简单方法是使用drawPolyline方法。它要求您将x和y坐标存储在单独的int[]数组中,但它比单独绘制每个线段更快更清晰。

如果您需要浮点坐标,最好的方法是使用Graphics2D对象Shape。遗憾的是,Java似乎没有提供折线Graphics2D graphics = /* your graphics object */; double[] x = /* x coordinates of polyline */; double[] y = /* y coordinates of polyline */; Path2D polyline = new Path2D.Double(); polyline.moveTo(x[0], y[0]); for (int i = 1; i < x.length; i++) { polyline.lineTo(x[i], y[i]); } graphics.draw(polyline); 实现,但您可以轻松使用Shape

Enumerable<string>

这种方式也可以让您轻松转换坐标 - 当然,转换视图可能更有效。