如何从SVG中提取“数据”,进行更改,然后以正确的格式放回去?

时间:2019-04-15 14:47:00

标签: c# wpf svg path

感谢您对我的帮助!我想使用代码更改路径(SVG)的整个数据,以便可以将路径的位置移至特定方向。例如,史蒂夫(Steve)使用以下代码帮助我在所有(x,y)对中的x上加1,以将路径(SVG)向正确的方向移动:Steve's code(但第一个x(311)不会)变化。有一些错误)

var data = @"M311.97458,250.39993L213.97533,248.39996 222.37435,216.7998C222.37435,216.7998 ......589.5753,173.99994,593.1753,179.9999......334.3039,253.21373 311.97458,250.39993 z"; '           
var replaced = Regex.Replace(data, "((?=[^, ])\\d+\\.\\d+),", (match) => (double.Parse(match.Groups[1].Value) + 1).ToString()+",")
// output: M311.97458,251.39993L214.97533,249.39996 223.37435,217.7998C223.37435,217.7998 ......590.5753,174.99994,594.1753,180.9999......335.3039,254.21373 312.97458,251.39993 z

获得输出后,我尝试将其放入数据中。我写了a.SetValue(Path.DataProperty,replace)a.SetValue(Path.DataProperty,Geometry.Parse(replace)),但是它们都不起作用。结果显示

  

未处理的错误:System.FormatException:输入字符串的格式不正确。

如何将输出更改为路径(SVG)数据的正确格式?还是应该更改以前的代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

WPF中的路径使用简单的几何。 Here解释了有关该语法的所有内容。如果您阅读并理解了该文章,将很容易遍历自己的Path并以所需的方式对其进行修复。

主要命令:

移动命令for i in request.form: answered=request.form[i] ... -或-M startPoint

行命令m startPoint-或-L endPoint

水平线命令l endPoint-或-H x

垂直线命令h x-或-V y

三次贝塞尔曲线命令v y-或-C controlPoint1 controlPoint2 endPoint

二次贝塞尔曲线命令c controlPoint1 controlPoint2 endPoint-或-Q controlPoint endPoint

椭圆弧命令q controlPoint endPoint -或-A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint