假如有一个数组里有很多点,然后有的点的Y值是无效值需要被过滤,然后这样导致有的点前后都是无效点的话就需要单独绘制,如何使用Java里的drawPath()方法用于绘制这种路径
时间: 2024-02-21 13:00:49 浏览: 19
可以使用Java里的`Path2D`类来绘制这样的路径。`Path2D`类是一个可以定义任意形状的类,可以用来绘制线段、曲线和复杂的形状。
下面是一个示例代码,假设有一个长度为n的数组points,其中有些点的Y值是无效值,需要被过滤。在过滤掉无效点之后,如果有连续的两个点都是无效点,就需要将它们单独绘制。
```
Graphics2D g2d = (Graphics2D) g;
Path2D path = new Path2D.Double();
// 遍历points数组
for (int i = 0; i < n; i++) {
double x = points[i].getX();
double y = points[i].getY();
if (isValid(y)) { // 如果Y值有效
if (path.getCurrentPoint() == null) {
// 如果path为空,则将当前点作为起点
path.moveTo(x, y);
} else if (i == n - 1 || !isValid(points[i+1].getY())) {
// 如果当前点是最后一个点,或者下一个点的Y值无效,则将当前点作为终点
path.lineTo(x, y);
g2d.draw(path); // 绘制路径
path.reset(); // 清空路径
} else {
// 否则将当前点添加到路径中
path.lineTo(x, y);
}
} else {
path.reset(); // 清空路径
}
}
```
上面的代码使用了`Path2D`类来绘制路径,使用`isValid()`方法来判断Y值是否有效。如果当前点是一个有效点,就添加到路径中;如果当前点是一个无效点,则清空路径。当遇到连续的两个无效点时,就将它们单独绘制出来。