我正在创建一个小平台游戏,我想比较一个玩家矩形的边界与我的平台的许多矩形元素。我知道在WinForms中我可以使用PictureBox .bounds.intersectswith()
方法。
在我的xaml中,我在一个名为program的gridpane中定义了这样的控件。
<Rectangle Name="player" Tag="player" HorizontalAlignment="Left" Height="61" Stroke="Black" VerticalAlignment="Top" Width="75" Canvas.Top="332" Canvas.Left="25">
<Rectangle.Fill>
<ImageBrush ImageSource="player.png"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle Tag="platform" HorizontalAlignment="Left" Height="82" Stroke="Black" VerticalAlignment="Top" Width="100" Canvas.Top="398">
<Rectangle.Fill>
<ImageBrush ImageSource="purplebrick.png"/>
</Rectangle.Fill>
</Rectangle>
然后我想比较玩家与大约50个平台的界限。
foreach (Rectangle x in LogicalTreeHelper.GetChildren(program))
{
if (x is Rectangle && x.Tag.ToString() == "platform")
{
if(player.intersectswiht(x) // problem area
iv一直使用这个问题Bounds.Intersect for WPF作为参考,但是我是否需要为每个矩形元素命名并创建一个实际的引用以便能够使用它与函数的交叉?
或者我应该只是比较每个元素尺寸(canvas.top等),但这只会给我边缘值而不是它们重叠正确的范围?