Как изменить положение точки происхождения холста - PullRequest
0 голосов
/ 08 января 2012

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

Обычно пользователь рисует на холсте, холст в 5 раз больше размера экрана,и холст все еще находится в центре экрана (или экран находится в центре холста).

Чтобы сделать его гибким для размера холста (мы хотим изменить размер холстав будущем), мы хотим установить центр холста как точку начала координат, то есть (0, 0) находится в центре холста.Поэтому, когда мышь где-то щелкает, полученная точка измеряется по центру холста.

Может быть, вы скажете:

  1. Canvas.RenderTransformOrigin = (.5,.5).Но я не спрашиваю о вращающемся центре, поэтому это не решение.
  2. Canvas.RenderTransform = TranslateTransform (Canvas.Width/2.0, Canvas.Height/2.0).Но это просто переместит все объекты на холсте в центр.

Вы также можете сказать, почему бы нам просто не перевести точки MouseClick со смещением Canvas.Width/2.0, Canvas.Height/2.0, а затем перевести ихназад при рендеринге.Мы могли бы сделать это, но слишком много усилий, потому что у нас есть много других операций, которые нужно реализовать, поэтому каждый раз нам приходится переводить туда-сюда.

1 Ответ

0 голосов
/ 09 января 2012

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

Свойства Canvas, Left и Top, которые определяют положение элементов, являются прикрепленными свойствамиВы можете создать свои собственные вложенные свойства, OffsetLeft, OffsetTop, которые позволят вам позиционировать элементы на основе нужного вам источника.Это было бы просто реализовать, когда они получают / устанавливают, просто обрабатывают их событие изменения, чтобы установить соответствующие Canvas присоединенные свойства.

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