簡體   English   中英

將字符串列表轉換為CGPoint數組

[英]Convert String List to CGPoint Array

我有一個不確定的問題,甚至無法解決,但如果可能的話,確實需要一些幫助。 我正在做的基礎是使用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}

您使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM