Рассчитать границы нескольких элементов silverlight - PullRequest
1 голос
/ 06 декабря 2011

У меня есть холст, на этом холсте есть несколько элементов.Я могу получить границы этих элементов отдельно.

Как я могу рассчитать границы всех элементов с этими данными?

Пожалуйста, посмотрите на это графическое представление, надеюсь, что это проясняет ситуацию.

Graphical representation

1 Ответ

1 голос
/ 07 декабря 2011

Извлеките значения Point для каждого угла ваших элементов в список, а затем получите минимальное и максимальное значения 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...