两个简单的问题,首先是为什么我的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);
}
答案 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)
这样的事情:
\
\
\
|
|
|____________
如果您没有看到此类结果,则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);
}