我正在使用以下代码从CombinedGeometry
并获得如下的最终几何图形:
我想知道有没有办法获得最终结果的几何定义?像点集合之类的东西可以帮助我以后用不同的属性重绘它,甚至可以将点坐标写到文件中?
<Window x:Class="Combine.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Canvas Width="300" Height="300">
<Path Stroke="Black" StrokeThickness="1" Fill="Transparent">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="40,40, 200, 50" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<RectangleGeometry Rect="100,0, 50, 200" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Canvas>
</Window>
答案 0 :(得分:2)
您可以尝试使用combinedGeometry.GetFlattenedPathGeometry();
方法。这将返回PathGeometry对象。然后,您可以将其转换为字符串并写入文件,或者通过PathGeometry中包含的figur运行并使用坐标。
PathGeometry geometry = combinedGeometry.GetFlattenedPathGeometry();
Console.WriteLine(geometry.ToString());
foreach (PathFigure figure in geometry.Figures)
{
Console.WriteLine(figure.StartPoint);
foreach (PathSegment segment in figure.Segments)
{
foreach (Point point in ((PolyLineSegment)segment).Points)
{
Console.WriteLine(point);
}
}
}
答案 1 :(得分:1)
您也可以使用PathGeometry.Combine()代替CombinedGeometry。生成的PathGeometry具有图形和段。 PS:您还可以从任何其他几何体创建PathGeometry。看一下静态构造函数PathGeometry.CreateFromGeometry()。 PathGeometry result = PathGeometry.Combine(g1,g2,GeometryCombineMode.Exclude,null);