for (int x = 0; x < route.Length; x++ )
{
if (nodes[route[x] + 1, 0] == nodes[route[x], 0]) //right or left
{
path[x] = new Rectangle();
path[x].Fill = new SolidColorBrush(Colors.Red);
int width = nodes[route[x] + 1, 1] - nodes[route[x], 1];
path[x].Width = width;
path[x].Height = 10;
Canvas.SetLeft(path[x], nodes[route[x], 0]);
Canvas.SetTop(path[x], nodes[route[x], 1] - 10);
MapCont.Children.Add(path[x]);
}
else //up or down
{
path[x] = new Rectangle();
path[x].Fill = new SolidColorBrush(Colors.Red);
int height = nodes[route[x] + 1, 0] - nodes[route[x], 0];
path[x].Width = 10;
path[x].Height = height;
Canvas.SetLeft(path[x], nodes[route[x], 0]);
Canvas.SetTop(path[x], nodes[route[x], 1] - 10);
MapCont.Children.Add(path[x]);
}
}
path [x] .Width给出了ArgumentException。
代码应该采用坐标列表并在它们之间绘制三角形。
先谢谢
答案 0 :(得分:2)
如果您尝试将宽度设置为负值,则会得到ArgumentException
。您可能希望更改将宽度设置为使用绝对值的行,如下所示:
int width = Math.Abs(nodes[route[x] + 1, 1] - nodes[route[x], 1]);