QA@IT
«回答へ戻る

RectGeometry → RectangleGeometry

104
 最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。
 
-例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。
+例示されたPolygonの座標をそのまま使っているため、RectangleGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。
 
 ```csharp
 using System.Windows;

最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。

例示されたPolygonの座標をそのまま使っているため、RectangleGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;

            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);

            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}

XAMLはこんな感じです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。

例示されたPolygonの座標をそのまま使っているため、RectangleGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

```csharp
using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;
            
            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);
            
            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}
```

XAMLはこんな感じです。

```xml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
```

冒頭の()の文の位置を変更。

104
-最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました(「poly, poly」のままですと打ち消し合って消えてしまうので)。
+最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。
 
 例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。
 

最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。

例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;

            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);

            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}

XAMLはこんな感じです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?(「poly, poly」のままですと打ち消し合って消えてしまうので)その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました。

例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

```csharp
using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;
            
            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);
            
            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}
```

XAMLはこんな感じです。

```xml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
```

回答を投稿

最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました(「poly, poly」のままですと打ち消し合って消えてしまうので)。

例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;

            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);

            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}

XAMLはこんな感じです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
最後の行の「poly, poly」は「rect, poly」の間違いでしょうか?その前提で、Polygonの代わりにPolyLineSegmentを用意して、PathGeometryのFiguresへ追加、RectGeometryとPathGeometryをXORしてみました(「poly, poly」のままですと打ち消し合って消えてしまうので)。

例示されたPolygonの座標をそのまま使っているため、RectGeometryの外側にPolyLineSegmentがはみ出してますが、XORの効果は確認できると思います。

```csharp
using System.Windows;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var rect = new RectangleGeometry();
            rect.Rect = new Rect(50, 50, 150, 150);

            var segment = new PolyLineSegment();
            segment.Points.Add(new Point(30, 30));
            segment.Points.Add(new Point(100, 120));
            segment.Points.Add(new Point(130, 150));
            segment.Points.Add(new Point(130, 100));
            segment.Points.Add(new Point(80, 50));
            segment.Points.Add(new Point(30, 30));
            segment.IsStroked = false;
            
            var figure = new PathFigure();
            figure.Segments.Add(segment);

            var path = new PathGeometry();
            path.Figures.Add(figure);
            
            Path1.Data = new CombinedGeometry(GeometryCombineMode.Xor, rect, path);
        }
    }
}
```

XAMLはこんな感じです。

```xml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Path Stroke="Gray" StrokeThickness="1" Fill="Pink" Name="Path1"/>
    </Grid>
</Window>
```