将两个Path数字合二为一?

And*_*lai 0 c# wpf geometry xaml path

我有这两种形状:

图1 图2

拳头图片代码:

<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)中完成.谢谢!

She*_*dan 7

对于想要了解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页面.