我正在写一个程序来控制一个移动机器人。它必须做的一件事是绘制一张机器人感知到的“世界”的地图,并在感知到它们时在地图上应用更改。它还必须以某种方式突出显示机器人的位置和(理想情况下)它所指向的方向。
我目前有一个表示地图的自动更新数组(100 x150),使用以下表示:0表示清晰的路径,1表示障碍物。我还有一个变量,包含机器人的位置和下一个位置。
我需要的是把它可视化。我想过使用标签,但使用它们太乏味了,而且最终的结果也不是很好。我的另一种可能是将所有数据写入Excel电子表格,但然后我将回到起点:以一种吸引人的方式可视化数据。有没有某种绘图包可以完成这项工作?
总结一下:
使用:
- int[] MapArray //100 x 150 array representing the robot's world, and the data there is changing.
- Point[] Locations //Locations[0] is the current location, Locations[1] is the next step.我想在Windows窗体应用程序上绘制一张地图,该应用程序以一种漂亮的可视化方式自我更新。
我希望我的问题足够清楚,如果不清楚,请随时与我联系!
发布于 2011-01-09 01:22:24
试试或类似的东西。
只需编写几个循环,访问数组中的每个单元格,并根据坐标在窗体上绘制一个矩形-这是最简单的方法。
for(int i=0; i<100; i++)
{
for(int j=0;j<150;j++)
{
<access[i,j] and draw a rectangle with color accordingly to your contents.>
}
}图形位置也是如此。
发布于 2011-01-09 01:20:42
如果您找不到任何好的控件,可以始终使用列宽=行高的DataGridView,以便始终显示方形单元格。在此之后,只需更改障碍物的背景颜色。
您还可以查看映射数组的可观察集合,以便网格基于事件而不是计时器进行更新。确保覆盖observable集合以发送CollectionChanged事件,即使在单元格更改其值时也是如此,而不仅仅是在添加/删除单元格时。
https://stackoverflow.com/questions/4635031
复制相似问题