2011-12-06 6 views
1

私はキャンバスを持っていますが、このキャンバスにはいくつかの要素があります。私はこれらの要素の境界を別々に得ることができます。bounds複数の要素を計算するsilverlight

そのデータを持つすべての要素の境界をどのように計算できますか?

このグラフィック表現を見て、物事を明確にしてください。

Graphical representation

答えて

1

リストにあなたの要素の各コーナーのためのポイント値を引いた後、最小値と最大値Xを取得し、Yは、このサイトには、それぞれの値を検索する方法を示し

 List<Point> Points = new List<Point>(); 

     foreach (UIElement x in cvsMain.Children.Where(ui => ui.GetType() == typeof(Rectangle))) 
     { 
      // Obtain transform information based off element you need to find position within 
      GeneralTransform gt = x.TransformToVisual(cvsMain); 

      // Find the four corners of the element 
      Points.Add(gt.Transform(new Point(0, 0))); 
      Points.Add(gt.Transform(new Point((x as Rectangle).Width, 0))); 
      Points.Add(gt.Transform(new Point(0, (x as Rectangle).Height))); 
      Points.Add(gt.Transform(new Point((x as Rectangle).Width, (x as Rectangle).Height))); 
     } 

     Double Left = Points.Min(p => p.X); 
     Double Right = Points.Max(p => p.X); 
     Double Top = Points.Min(p => p.Y); 
     Double Bottom = Points.Max(p => p.Y); 

値コーナー http://forums.silverlight.net/t/12160.aspx/1

+1

ポイントコレクションを省略して、ループ内のx、y座標の最小値/最大値を見ることもできます。 –

+0

ありがとう私はこれを旋風にします。 – tutu

関連する問題