Видимые элементы в холсте WPF - PullRequest
       6

Видимые элементы в холсте WPF

3 голосов
/ 23 сентября 2011

У меня есть WPF Canvas и к нему добавлено много фигур (StreamGeometry / Path).У меня определено ScaleTransform для увеличения определенной области.

Я увеличил произвольное пространство на холсте, и фигуры масштабируются.Теперь можно ли получить фигуры, которые находятся в видимой области холста.

Спасибо за любые указатели.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Должно ли это помочь?

Перебрать все дочерние формы холста и проверить следующее для каждого myShape ....

     hitArea
       = new EllipseGeometry(
           new Point(Canvas.GetLeft(myShape), Canvas.GetTop(myShape)),
           1.0, 
           1.0); 

     VisualTreeHelper.HitTest(
          myShape, null,
          new HitTestResultCallback(HitTestCallback),
          new GeometryHitTestParameters(hitArea)); 

     public HitTestResultBehavior HitTestCallback(HitTestResult result)
     {
         if (result.VisualHit == myShape)
         {
              //// This shape is on the visible area.
         }
     }
2 голосов
/ 23 сентября 2011

Вы можете использовать HitTest , чтобы выполнить проверку удара по ограничивающему прямоугольнику Canvas.Для получения дополнительной информации см. Тестирование попаданий в визуальном слое и обратитесь к примеру для Тестирование попаданий с DrawingVisuals .

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