Как изменить размер холста в WPF? - PullRequest
4 голосов
/ 30 января 2010

Я пишу приложение WPF, в котором есть Canvas. Этот холст будет индивидуально отображаться во время выполнения. Это похоже на игру в том смысле, что ее нужно измерять в пикселях. Мне нужно иметь возможность установить Canvas на 478x478 пикселей (размер прямоугольника клиента). Я не хочу, чтобы на моем Canvas.

выполнялись какие-либо масштабирующие или другие независимые от разрешения шаги.

Я не уверен, возможно ли это в WPF, поскольку его природа должна быть независимой от разрешения. Мои вопросы:

  1. Как мне изменить размер Canvas во время выполнения (функция для вызова?)
  2. Когда я изменяю размер моего Canvas, будет ли размер отображаемой области (прямоугольник клиента) таким же? Если нет, как я могу изменить его размер, чтобы убедиться, что клиентский прямоугольник имеет определенную ширину / высоту?
  3. Можно ли установить ширину / высоту Canvas в пикселях? Как независимый от разрешения аспект WPF мешает тому, что я пытаюсь сделать?
  4. Когда я изменю размер моего Canvas, изменятся ли другие элементы управления соответствующим образом, как они были разработаны в конструкторе WPF?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 30 января 2010

Любые элементы, расположенные на холсте, не будут изменять размеры или перемещаться в зависимости от размера холста.Поэтому я не думаю, что есть какая-то польза от установки размера холста.Возможно, вам следует просто установить фиксированный размер окна.

В противном случае, просто установите Canvas.Width, Height и ClipToBounds = True, и у вас будет холст фиксированного размера, который позиционирует свои дочерние элементы с помощью X / Yкоординаты.

Также вы должны обязательно установить SnapsToDevicePixels = True на холст, чтобы дочерние элементы имели четкие границы с выравниванием по пикселям.

5 голосов
/ 30 января 2010

изменение размера - торт:

MyCanvas.Width = 350;
MyCanvas.Height  = 450;

это устанавливает размер, который вы МОЖЕТЕ визуализировать с координатами за пределами этого, но он будет обрезан. Вы можете обернуть свой холст внутри скроллера, чтобы пользователь мог видеть, что находится за пределами высоты / ширины холста.

Что касается остальных ваших вопросов, я думаю, вы можете увидеть этот ТАК вопрос для ваших ответов

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