0

私はこれらの2つの形状を持っています:

図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>

2 番目の画像コード:

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

このようなものにそれらを組み合わせるにはどうすればよいですか(テキストは無視してください): ここに画像の説明を入力

これは C# で行う必要があります ( xaml ではありません)。ありがとう!

4

1 に答える 1

9

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>

詳細については、MSDN の「方法: 結合されたジオメトリを作成する」ページを参照してください

StartPointまた、これらのオブジェクトのプロパティを設定PathFigureして、図形を正しく並べる必要があることに注意してください。

更新 >>>

C#メソッドを知りたい方へ

申し訳ありませんが、コードの使用を希望していることに気付きませんでした。コードでは、PathGeometryオブジェクトに名前を付けてResourcesセクションに配置する必要があります。

<Application.Resources>
    <PathGeometry x:Key="Shape1">
        ...
    </PathGeometry>
    <PathGeometry x:Key="Shape2">
        ...
    </PathGeometry>
</Application.Resources>

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; 

このメソッドの詳細については、MSDNのCombinedGeometry クラスページを参照してください。

于 2013-10-01T10:56:47.313 に答える