6

私は XAML にこの四角形を持っています:

<Rectangle x:Name="MyRectangle" Height="300" Width="300"></Rectangle>

別の長方形と交差しているかどうかを確認したい。SO に関するこの質問では、 IntersectsWith メソッドを使用する必要があると述べています。しかし、コード ビハインドでは使用できません。C# で書くと:

MyRectangle.IntersectsWith(

標準エラーが表示されます:

「System.Windows.Shapes.Rectangle には 'IntersectsWith' の定義が含まれておらず、拡張メソッドもありません [...]」

これは、XAML の四角形が でSystem.Windows.Shapes.Rectangle、メソッドがSystem.Windows.Rect?であるためだと思います。Rectangleもしそうなら、私をに「変換」する方法はありRectますか?

4

3 に答える 3

3

これが私が最終的に使用したソリューションです。他の要素と交差するかどうかをテストしたい要素ごとに、それを含む Rect を作成します。したがって、IntersectsWith メソッドを使用できます。

例(長方形を使用しますが、他の図、UserControlsなどでこれを行うことができます...):XAML

<Canvas>
    <Rectangle x:Name="Rectangle1" Height="100" Width="100"/>
    <Rectangle x:Name="Rectangle2" Height="100" Width="100" Canvas.Left="50"/>
</Canvas>

C#

Rect rect1 = new Rect(Canvas.GetLeft(Rectangle1), Canvas.GetTop(Rectangle1), Rectangle1.Width, Rectangle1.Height);
Rect rect2 = new Rect(Canvas.GetLeft(Rectangle2), Canvas.GetTop(Rectangle2), Rectangle2.Width, Rectangle2.Height);
if(rect1.IntersectsWith(r2))
{
    // The two elements overlap
}
于 2013-07-16T22:28:47.040 に答える