[英]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.