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 将字符串转换为 PathGeography 或类似的方法?

当然 XAML 以某种方式得到解析和数据字符串转换?

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

路径。数据属于几何类型。使用 反光镜 JustCompile (eff 红门),我查看了 TypeConverterAttribute (xaml 序列化程序用于将 string类型的值转换为 Geometry类型的值)的几何定义。这让我想到了几何转换器。通过检查实现,我发现它使用 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.Windows.Media.FormattedText 类和 BuildGeology ()方法

 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;
}