折线只画了两条线和一条线。 Point.Parse问题

时间:2018-06-04 03:10:29

标签: c# parsing point polyline

两个简单的问题,首先是为什么我的Polyline只连接字符串W,X和Y. 其次是可以为多个点解析一个字符串,即:将所有数字存储在字符串W中,然后将Point.Parse(W)存储为所有点。

private void Button_Click(object sender, RoutedEventArgs e)
{
    string W = "0,0";
    string X = "99,99";
    string Y = " 99, 300";
    string Z = "600, 300";
    Point[] points = { Point.Parse(W), Point.Parse(X), Point.Parse(Y), Point.Parse (Z)};
    DrawLine(points);
}

private void DrawLine(Point[] points)
{
    Polyline line = new Polyline();
    PointCollection collection = new PointCollection();
    foreach (Point p in points)
    {
        collection.Add(p);
    }
    line.Points = collection;
    line.Stroke = new SolidColorBrush(Colors.Black);
    line.StrokeThickness =3;
    myGrid.Children.Add(line);
}

1 个答案:

答案 0 :(得分:0)

Polyline连接指定的顶点及其Points属性,以PointCollection的形式表示。

您当前的Points集合定义了4个顶点,这将生成3条相连的线:

Point(0, 0)Point(99, 99)的1行 从Point(99, 99)Point(99, 300)的1行 从Point(99, 300)Point(600, 300)

的1行

这样的事情:

\
 \
  \
   |
   |
   |____________

如果您没有看到此类结果,则Grid可能没有足够的空间来容纳所有图形,然后将其截断。

PointCollection.Parse()方法允许您指定一个字符串,其中包含由空格分隔的逗号或Point个参考对分隔的点集合。
这些都是有效的:

string points = "0,0,99,99,99,300,600,300";

string points = "0,0 99,99 99,300 600,300";

然后,您可以拥有一个包含所有Points引用的字符串 您的代码可能会以这种方式修改:

using System.Windows.Media;
using System.Windows.Shapes;

string points = "0,0,99,99,99,300,600,300";
PointCollection collection = PointCollection.Parse(points);
DrawLine(collection);


private void DrawLine(PointCollection points)
{
    Polyline line = new Polyline();
    line.Points = points;
    line.Stroke = new SolidColorBrush(Colors.Black);
    line.StrokeThickness = 3;
    myGrid.Children.Add(line);
}