从字符串中获取矩形边界

时间:2012-05-08 11:28:43

标签: c# .net string

我想在注册表中保存窗口的边界,因为我使用代码:

dialogView.Save("WindowPosition", this.DesktopBounds.ToString());

dialogView是我想要保存它们的路径。它可以保存一切 例如:

{X=54,Y=153,Width=723,Height=555}

但是获得它们的最佳方式是什么,因为我可以从注册表中获取类型 可以是字符串 例如:

dialogView.Load("WindowPosition",string.Empty,out position);

但如何将字符串转换为矩形到init设置为窗口我不知道?有人会建议吗?

3 个答案:

答案 0 :(得分:9)

尝试RectangeConverter

RectangleConverter r = new RectangleConverter();

var rectangleAsString= r.ConvertToString(this.DesktopBounds);

var rectangle = (Rectangle)r.ConvertFromString(rectangleAsString);

答案 1 :(得分:2)

使用正则表达式:

{X=(\d+),\s*Y=(\d+),\s*Width=(\d+),Height=(\d+)}

请参阅演示 here

Match groups:
1.  54
2.  153
3.  723
4.  555

答案 2 :(得分:0)

var matches = Regex.Match("{X=54,Y=153,Width=723,Height=555}",
                           @"\D*(\d+)\D*(\d+)\D*(\d+)\D*(\d+)");

var rect = new Rectangle(int.Parse(matches.Groups[1].Value),
                         int.Parse(matches.Groups[2].Value),
                         int.Parse(matches.Groups[3].Value),
                         int.Parse(matches.Groups[4].Value));