WPF C#Path:如何从包含路径数据的字符串获取代码中的几何体(而不是XAML)
我想在代码中生成一个WPF路径对象 在XAML中,我可以这样做:WPF C#Path:如何从包含路径数据的字符串获取代码中的几何体(而不是XAML),c#,wpf,path,C#,Wpf,Path,我想在代码中生成一个WPF路径对象 在XAML中,我可以这样做: <Path Data="M 100,200 C 100,25 400,350 400,175 H 280"> 是否有可用的类/方法将包含PathData的字符串转换为PathGeometry或类似的类/方法 确实,XAML会被解析,数据字符串会被转换吗 var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,
<Path Data="M 100,200 C 100,25 400,350 400,175 H 280">
是否有可用的类/方法将包含PathData的字符串转换为PathGeometry或类似的类/方法
确实,XAML会被解析,数据字符串会被转换吗
var path = new Path();
path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");
路径。数据类型为几何体。使用Reflector JustDecompile(eff Red Gate),我查看了其TypeConverterAttribute的几何体定义(xaml序列化程序使用它将
字符串类型的值转换为几何体)。这让我想到了几何变换器。查看实现时,我看到它使用了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);
我希望它能帮助您。要从原始文本字符串生成几何图形,可以使用System.Windows.Media.FormattedText类和BuildGeometry()方法
嗯,我花了一分钟在谷歌上搜索答案,但没有找到任何合理的答案。因此,在这种情况下(必须存在简单的解决方案),我浏览了一下代码。我知道WPF是如何从字符串转变为复杂类型的,所以我遵循了这一思路。理解这个过程对于知道答案来说是第二重要的。@Peterdk:WP7中有替代方案吗?WP7路径如何将字符串转换为几何体?@将看到@Nasenbaer:这很不幸。如果您按照与我相同的步骤确定如何在桌面WPF应用程序上执行此操作,您可以找到应用商店应用程序的答案。事实证明,您必须对Windows应用商店和手机应用程序执行此操作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);
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;
}