Как мне извлечь «данные» из SVG, изменить их, а затем вернуть обратно в правильном формате? - PullRequest
0 голосов
/ 15 апреля 2019

Спасибо за помощь! Я хотел бы изменить все данные пути (SVG) с помощью кода, чтобы я мог переместить положение пути в определенном направлении. Например, Стив помогает мне с помощью следующего кода добавить 1 к x во всей паре (x, y), чтобы переместить путь (SVG) в правильном направлении: Код Стива (но первый 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 голосов
/ 16 апреля 2019

Пути в WPF используют простую геометрию. Здесь все о синтаксисе этого объясняется. Если вы прочитаете и поймете эту статью, вам будет гораздо проще пройти свой собственный путь и исправить его так, как вы хотите.

Основные команды:

Команда перемещения M startPoint - или - m startPoint

Строка команды L endPoint - или - l endPoint

Команда горизонтальной линии H x - или - h x

Команда вертикальной линии V y - или - v y

Команда кубической кривой Безье C controlPoint1 controlPoint2 endPoint - или - c controlPoint1 controlPoint2 endPoint

Команда Quadratic Bezier Curve Q controlPoint endPoint - или - q controlPoint endPoint

Команда эллиптической дуги A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint - или - a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...