Мне было интересно, есть ли инструмент для преобразования данных пути, например «M 0 0 10 10», в его эквивалентный код сегмента линии/кривой.WPF, конвертировать объекты Path.DataProperty в сегмент
В настоящее время я использую:
string pathXaml = "<Path xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Data=\"M 0 0 l 10 10\"/>";
Path path = (Path)System.Windows.Markup.XamlReader.Load(pathXaml);
Мне кажется, что вызов XamlParser гораздо медленнее, чем явно создавая сегменты линии. Однако преобразование множества путей вручную очень утомительно.
Привет itowlson, похоже, автор вопроса использует XamlReader, который действительно медленный для такого рода операций. Вместо этого вы можете предложить ему использовать метод * Geometry.Parse() *. Это быстрее, чем XamlReader. Кстати, в вашем сценарии вы также можете опустить конвертеры и использовать * PathFigureCollection.Parse() *:) ... Я все еще думаю, что ваш ответ правильный. – Anvaka
Anvaka: мальчик, мое лицо красное. Я даже не понимал, что эти методы публичны - я думал, что единственный способ добраться до них - через конвертер. Я буду обновлять - большое спасибо! (Что касается XamlReader и синтаксического анализа строк, похоже, он редактировал вопрос во время написания - в исходной версии, которую он настраивал, напрямую устанавливая свойство Path из строки в коде.) – itowlson
Спасибо за все ответы, да, я редактировал вопрос, код в моей программе немного отличается, но идея такая же. Я буду реализовывать предложенную оптимизацию. – user275587