And*_*lai 0 c# wpf geometry xaml path
我有这两种形状:

拳头图片代码:
<Path Fill="Orange">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="0,100">
<BezierSegment Point1="50,110" Point2="50,110" Point3="100,100"></BezierSegment>
<LineSegment Point="100,80"></LineSegment>
<LineSegment Point="120,90"></LineSegment>
<LineSegment Point="120,70"></LineSegment>
<LineSegment Point="100,60"></LineSegment>
<LineSegment Point="100,20"></LineSegment>
<LineSegment Point="80,0"></LineSegment>
<LineSegment Point="20,0"></LineSegment>
<LineSegment Point="0,20"></LineSegment>
<LineSegment Point="0,40"></LineSegment>
<LineSegment Point="-20,20"></LineSegment>
<LineSegment Point="-20,40"></LineSegment>
<LineSegment Point="0,60"></LineSegment>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
Run Code Online (Sandbox Code Playgroud)
第二张图片代码:
<Path Fill="Orange">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="0,25"></LineSegment>
<LineSegment Point="250,25"></LineSegment>
<LineSegment Point="250,0"></LineSegment>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
Run Code Online (Sandbox Code Playgroud)
我如何将它们组合成这样的东西(忽略文本):

我需要在C#(而不是xaml)中完成.谢谢!
对于想要了解XAML方法的用户
基本上,您可以使用CombinedGeometry对象来执行此操作:
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<!-- Combines two geometries using the exclude combine mode. -->
<CombinedGeometry GeometryCombineMode="Union">
<CombinedGeometry.Geometry1>
<PathGeometry>
<PathFigure StartPoint="0,100">
<BezierSegment Point1="50,110" Point2="50,110" Point3="100,100"></BezierSegment>
<LineSegment Point="100,80"></LineSegment>
<LineSegment Point="120,90"></LineSegment>
<LineSegment Point="120,70"></LineSegment>
<LineSegment Point="100,60"></LineSegment>
<LineSegment Point="100,20"></LineSegment>
<LineSegment Point="80,0"></LineSegment>
<LineSegment Point="20,0"></LineSegment>
<LineSegment Point="0,20"></LineSegment>
<LineSegment Point="0,40"></LineSegment>
<LineSegment Point="-20,20"></LineSegment>
<LineSegment Point="-20,40"></LineSegment>
<LineSegment Point="0,60"></LineSegment>
</PathFigure>
</PathGeometry>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<PathGeometry>
<PathFigure StartPoint="0,100">
<LineSegment Point="0,25"></LineSegment>
<LineSegment Point="250,25"></LineSegment>
<LineSegment Point="250,0"></LineSegment>
</PathFigure>
</PathGeometry>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
Run Code Online (Sandbox Code Playgroud)
请查看MSDN 上的如何:创建组合几何页面以获取完整详细信息.
另请注意,您需要设置StartPoint这些PathFigure对象的属性以正确排列形状.
更新>>>
对于想要了解C#方法的用户
对不起,我没注意到你想使用代码.在代码中,您必须为PathGeometry对象命名并将它们放入一个Resources部分:
<Application.Resources>
<PathGeometry x:Key="Shape1">
...
</PathGeometry>
<PathGeometry x:Key="Shape2">
...
</PathGeometry>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
然后你仍然可以使用一个CombinedGeometry对象:
PathGeometry shape1 = (PathGeometry)Application.Current.FindResource("Shape1");
PathGeometry shape2 = (PathGeometry)Application.Current.FindResource("Shape2");
CombinedGeometry combinedGeometry = new CombinedGeometry(
GeometryCombineMode.Union, shape1, shape2);
Path combinedPath = new Path();
combinedPath.Data = combinedGeometry;
Run Code Online (Sandbox Code Playgroud)
有关此方法的更多信息,请查看MSDN 上的CombinedGeometry Class页面.