2

我的文本文件包含:

1.232 3.456
2.341 23.41
....

我想使用这些坐标来绘制从 Android eclipse 中的先前坐标继续的线。

到目前为止,我下面的代码可以读取要写入 canvas.drawLine(); 的第一行(line1a & line1b);

while (( line = buffreader.readLine()) != null) {
  String[] parts = line.split(" ");
  float line1a = Float.parseFloat(parts[0]);
  float line1b = Float.parseFloat(parts[1]);

  // TODO
  canvas.drawLine(line1a, line1b ,line2a, line2b,  paint);
  canvas.drawLine(line2a, line2b ,line3a, line3b,  paint);
}

我不知道如何在同一个循环中调用第 2a、2b、3a、3b 行来创建连续行

4

2 回答 2

0

想到了 2 种方法: 1. 先做一个 while 循环,将所有点读入一个有序的动态分配的数据结构(例如列表或动态数组...),称为行(包含点 - 浮点数对)。然后,第二个循环遍历这个数据结构,并从第一个点到第二个点、第二个点到第三个点画线,依此类推。2.在现有的while循环中,将前面的点存储在一个范围大于while循环的变量中。然后你可以重复使用它们。必须小心第一次迭代,您还不能绘制,但只能存储点。

如果要将最后一个点连接到第一个点,方法 1 可能更可取(可以通过显式保存第一个点并在 while 循环结束后连接第一个和最后一个点来调整 2)。

于 2013-07-25T23:23:13.957 回答
0
// Init point list. Here we use Float2 to represent a Point, use any
// data structure you like.
List<Float2> points = new ArrayList<Float2>();
// Create a point list from the file
while ((line = reader.readLine()) != null) {
    String[] parts = line.split(" ");
    float x = Float.parseFloat(parts[0]);
    float y = Float.parseFloat(parts[1]);
    points.add(new Float2(x, y));
}

// Connects these points use straight lines.
for (int i = 0; i < points.size() - 1; i++) {
    Float2 p1 = points.get(i);
    Float2 p2 = points.get(i + 1);
    canvas.drawLine(p1.x, p1.y, p2.x, p2.y, paint);
}
于 2013-07-26T03:34:32.553 回答