在wpf中设置矩形的高度/宽度时出现ArgumentException

时间:2014-02-02 20:57:53

标签: c# wpf

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。

代码应该采用坐标列表并在它们之间绘制三角形。

先谢谢

1 个答案:

答案 0 :(得分:2)

如果您尝试将宽度设置为负值,则会得到ArgumentException。您可能希望更改将宽度设置为使用绝对值的行,如下所示:

int width = Math.Abs(nodes[route[x] + 1, 1] - nodes[route[x], 1]);