1

私が持っている場合PointCollection

var points = new PointCollection();
points.Add(new Point(0, 0));
points.Add(new Point(10, 10));
points.Add(new Point(20, 20));
points.Add(new Point(30, 30));

string次を使用して同等のものを取得できます。

string str = points.ToString();

そして今strは:

0,0 10,10 20,20 30,30

逆のプロセスを取得するにはどうすればよいですか?

4

6 に答える 6

5

このようなもの?

var points = str.Split(' ').Select(x => 
{
    var c = x.Split(';');
    return new Point(int.Parse(c[0]), int.Parse(c[1]));
}).ToList();
于 2012-06-22T15:28:37.820 に答える
3

PointCollection.Parseメソッドを使用するだけです:

PointCollection points = PointCollection.Parse(str);
于 2012-06-22T15:54:56.127 に答える
2

"そして今、 str は次のとおりです。

0;0 10;10 20;20 30;30

「_いいえ、そのSystem.Collections.Generic.List1[System.Drawing.Point]代わりです。

ポイントを として出力する場合はString、X/Y 値をセミコロンで区切り、ポイントをセミコロンで区切ります。自分で行う必要があります。

例えば:

String forward = string.Join(" ", points.Select(p => p.X + ";" + p.Y));
points.Reverse();  // reverse the order of the list
String backward = string.Join(" ", points.Select(p => p.X + ";" + p.Y));

List(Of T).Reverse方法

編集:したがって、実際には使用していませんList<Point>が、 WPFPointCollectionです。私はそれを経験したことがなく、テストすることもできません。しかし、それが実装されているので、IEnumerable<Point>次のことができるはずです:

String backward = string.Join(" ", points.Reverse().Select(p => p.X + ";" + p.Y)); 
于 2012-06-22T15:34:13.980 に答える
1

これを試して:

 string strpoints = "0;0 10;10 20;20 30;30";
            var strpointarray = strpoints.Split(' ');
            var points = new List<Point>();
            foreach (var item in strpointarray)
            {
                var newitem= item.Split(';');
                points.Add(new Point(int.Parse(newitem[0]),int.Parse(newitem[1])));
            }
于 2012-06-22T15:34:21.307 に答える
0

toPoint2 つの引数を取り、それらを数値に変換し、それを新しい Point に渡し、それを返す関数を作成します...

これは、組み込みの String -> Number メソッドへのリンクですhttp://msdn.microsoft.com/en-us/library/bb397679.aspx

于 2012-06-22T15:26:53.820 に答える
0

もう 1 つの方法は、変換演算子を定義することです。変換演算子では、提供されたコード「ie」を記述する必要があります。変換演算子 (明示的および暗黙的) のリンクは次のとおりです http://msdn.microsoft.com/en-US/library/z5z9kes2%28v=vs.80%29 http://msdn.microsoft.com/en-US/ライブラリ/xhbhezf4%28v=vs.80%29

于 2012-06-22T16:22:54.840 に答える