WPF C# Path: как получить из строки с данными пути к геометрии в коде (не в XAML)
Я хочу создать объект пути WPF в коде.
в XAML я могу сделать это:
<Path Data="M 100,200 C 100,25 400,350 400,175 H 280">
Как я могу сделать то же самое в коде?
Path path = new Path();
Path.Data = "foo"; //This won't accept a string as path data.
есть ли класс/метод, который преобразует строку с PathData в PathGeometry или аналогичный?
конечно, каким-то образом XAML анализируется и преобразуется строка данных?
3 ответов:
var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");путь.Данные имеют тип Geometry. Используя
отражательJustDecompile (eff Red Gate), Я посмотрел на определение геометрии для его TypeConverterAttribute (который сериализатор xaml использует для преобразования значений типаstringtoGeometry). Это указало мне на GeometryConverter. Проверяя реализацию, я увидел, что она используетGeometry.Parseдля преобразования строкового значения пути в экземпляр геометрии.
вы можете использовать механизм привязки.
var b = new Binding { Source = "M 100,200 C 100,25 400,350 400,175 H 280" }; BindingOperations.SetBinding(path, Path.DataProperty, b);Я надеюсь, что это помогает вам.
чтобы сделать геометрию из исходной текстовой строки, вы можете использовать System.Окна.Сми.Класс 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; }
Comments