WPF C # Путь: как получить из строки с данными пути в геометрию в коде (не в XAML)

Я хочу создать объект Path WPF в Code.

В XAML я могу это сделать:

 

Как я могу сделать то же самое в коде?

  Path path = new Path(); Path.Data = "foo"; //This won't accept a string as path data. 

Существует ли class / метод, который преобразует строку с PathData в PathGeometry или аналогичную?

Разумеется, каким-то образом XAML анализируется и преобразуется строка данных?

 var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280"); 

Path.Data имеет тип Geometry. Используя Reflector JustDecompile (eff Red Gate) , я рассмотрел определение Geometry для его TypeConverterAttribute (которое сериализатор xaml использует для преобразования значений string типа в Geometry ). Это указывало на GeometryConverter. Выполнив реализацию, я увидел, что она использует Geometry.Parse для преобразования строкового значения пути в экземпляр Geometry.

Вы можете использовать механизм привязки.

 var b = new Binding { Source = "M 100,200 C 100,25 400,350 400,175 H 280" }; BindingOperations.SetBinding(path, Path.DataProperty, b); 

Надеюсь, это поможет вам.

Чтобы сделать геометрию из исходной текстовой строки, вы можете использовать class System.Windows.Media.FormattedText со способом BuildGeometry ()

  public string Text2Path() { FormattedText formattedText = new System.Windows.Media.FormattedText("Any text you like", CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface( new FontFamily(), FontStyles.Italic, FontWeights.Bold, FontStretches.Normal), 16, Brushes.Black); Geometry geometry = formattedText.BuildGeometry(new Point(0, 0)); System.Windows.Shapes.Path path = new System.Windows.Shapes.Path(); path.Data = geometry; string geometryAsString = geometry.GetFlattenedPathGeometry().ToString().Replace(",",".").Replace(";",","); return geometryAsString; } 
  • Удалить файл, используемый другим процессом
  • Как я могу преобразовать 'System.Windows.Input.Key' в 'System.Windows.Forms.Keys'?
  • Таймер WPF Как таймер C #
  • Что такое ViewModelLocator и каковы его плюсы и минусы по сравнению с DataTemplates?
  • Плоская кнопка wpf
  • Пользовательская реализация MVVM Vs. PRISM
  • Ускорить добавление объектов к canvasу В WPF
  • Вставить событие в текстовом поле WPF
  • Как разместить содержимое WPF в приложениях MFC?
  • Выберите узел TreeView правой кнопкой мыши перед отображением ContextMenu
  • Динамическое обновление содержимого TabControl во время выполнения
  • Давайте будем гением компьютера.