用java做了个校园导航,就是查路径,大致思想是在图上取很多的结点,我一共取了165个结点,然后标记不同节点之间的权值,也就是不同节点之间的距离,然后用迪杰斯特拉方法找出最短路径和最短距离,最短路径是将结点序号保存在vector里,每一个结点序号对应一个坐标,然后将vector里的结点依次连接起来
这里可以看到画线的全过程,然而在画完线后整条线,也就是搜索到的整条路径就会消失,有没有什么办法可以让线不要消失
贴出画线的代码
shortpath是vector型,里面存的是最短路径经过的所有结点
point是个多行2列的数组,每一行的两个元素就是x坐标和y坐标,比如说point[5][0]就代表序号为5的结点的x坐标,point[5][1]就代表序号为5的结点的y坐标
public static Graphics g;
startX=point[(int) res.shortpath.get(0)][0];
startY=point[(int) res.shortpath.get(0)][1];
float width = 2.0f; // 设置需要的宽度
g = systemPictureLabel.getGraphics();
Graphics2D g2 = (Graphics2D)g ; //将Graphics的对象g转换为 Graphics2D对象
for (int i = 1; i < res.shortpath.size(); i++) //依次连接结点
{ number =(int) res.shortpath.get(i);
endX=point[number][0];
endY=point[number][1];
g2.setStroke( new BasicStroke( width ) ); //确定线条宽度
g2.setFont(new java.awt.Font("",java.awt.Font.TRUETYPE_FONT ,20));
g2.setColor(Color.red);
g2.drawLine(startX, startY,endX ,endY );
try
{
Thread.sleep(800);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
startX=endX;
startY=endY;
}