如何将UIElement转换为Rectangle

时间:2014-02-17 11:26:39

标签: c#

我有一些存储在Canvas.Children中的矩形,当遍历Canvas.Children时,我可以使用

for (int i=0; i<Canvas.Children.Count; i++)
{
     UIElement ui = Canvas.Children[i];
}

但是我不知道如何将ui转换为System.Windows.Shapes.Rectangle。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

可在此related question中找到有用的答案。

也可以在MSDN here上找到有用的投射指南。

希望这有帮助。

答案 1 :(得分:0)

if(ui is Rectangle)
{
Rectangle rect = (Rectangle)ui;
}

答案 2 :(得分:0)

这是基于较早的答复。如collision=hitBox.IntersectsWith(rectList[rcount]);中所示,它对点击框可能很有用。

Rect[] rectList;
int rcount = 0; 
for (int i=0;i < CanvasB.Children.Count; i++) {
  UIElement ui = CanvasB.Children[i];
  if (ui is Rectangle) {
    rectList[rcount] = new Rect(
      Canvas.GetLeft(ui), 
      Canvas.GetTop(ui), (double)ui.GetValue(ActualWidthProperty), 
      (double)ui.GetValue(ActualHeightProperty)
    );
    rcount++;
  }
}