WPF: Как найти место для Canvas? - PullRequest
1 голос
/ 30 июня 2011

Я использую фигуры WPF для создания шестиугольников (для игровой карты) на холсте. Поработав со ScrollViewer, я решил сам реализовать прокрутку и масштабирование карты, а не использовать функциональность WPF, просто использовать WPF для получения событий для колеса мыши, клавиш со стрелками и т. Д. Я размещаю (Hex Map ) Холст как последний дочерний элемент панели Dock, поэтому он получит все доступное оставшееся пространство. Панель Dock будет настроена на содержание главного окна. Но я хочу выяснить, насколько большим может быть холст, прежде чем помещать на него детей, чтобы я мог центрировать экран по желаемому гексу и добавлять только те фигуры (гексы), которые действительно можно увидеть. При увеличении масштаба я буду полностью удалять полигоны и использовать другой метод рендеринга, а при увеличении масштаба буду добавлять больше деталей.

Есть ли какой-нибудь аккуратный способ получить доступное пространство? Единственный способ, который я могу придумать, это, надеюсь, сработает, это получить текущие размеры окон и вычесть размеры внешних элементов панели док-станции, но это выглядит довольно грязно.

1 Ответ

2 голосов
/ 30 июня 2011

Вы можете использовать свойства ActualWidth и ActualHeight Canvas, чтобы определить доступный для него размер.Убедитесь, что HorizontalAlignment и VerticalAlignment установлены на Stretch.

...