将字符串列表转换为CGPoint数组

时间:2018-08-11 16:31:33

标签: c# ios xamarin xamarin.ios

我有一个问题,甚至不确定是否可以解决,但如果可能的话,确实需要一些帮助。 我正在做的基础是使用CGPoint数组存储绘制的签名中的多个CGPoint,然后将该数组中的每个值存储到本地SQLite上的字符串数组中。

我是他们检索此SQLite数据并将其清除后传递回相同的List中。我需要将此列表转换为CoreGraphics.CGPoint数组,以便可以将数组重新显示在签名区域中。我尝试了各种方法来执行此操作,但这似乎是不可能的。

希望有人可以帮助我解决这个问题。

编辑

这就是我将CGPoint数组转换为列表的方式

var tempSignatureArray = signatureView.Points;

        foreach (var item in tempSignatureArray)
        {
            var tempItem = item.ToString();
            FormResults.signaturePoints.Add(tempItem);
        }

这是我尝试过的其他各种方法的尝试,现在我摆脱了:

var test = FormResults.signaturePoints.ToArray();

        CoreGraphics.CGPoint[] pointArray = test;

编辑2

下面是实际存储在字符串列表中的内容

{X=394.4296875, Y=71.359375}
{X=399.125, Y=71.875}
{X=405.2578125, Y=72.453125}
{X=412.5, Y=73}
{X=421.6875, Y=73.546875}
{X=432.6875, Y=74.125}

1 个答案:

答案 0 :(得分:0)

您使用foreach进行了初始转换,是否也使用foreach进行了逆转换?

List<CGPoint> pointList = new List<CGPoint>();

foreach (var p in FormResults.signaturePoints)
{
  // p is the string representation

  // you will need to do some parsing to convert the string p into x,y coords
  pointList.Add(new CGPoint(x,y));
}

pointArray = pointList.ToArray();

要解析字符串值,我会尝试类似的事情(注意RegEx在这里可能有用,但这不是我的强项)。

var s = "{X=394.4296875, Y=71.359375}";
var ss = s.Split(',');

var x1 = ss[0] .Substring(3, ss[0].Length-3);
double x = Double.Parse(x1);

var y1 = ss[1].Substring(3, ss[1].Length-3);
y1 = y1.Substring(0,y1.Length-1);
double y = Double.Parse(y1);
相关问题