Я работаю над проектом, который позволяет пользователям рисовать что-то и сохранять его в базе данных.
Обычно пользователь рисует на холсте, холст в 5 раз больше размера экрана,и холст все еще находится в центре экрана (или экран находится в центре холста).
Чтобы сделать его гибким для размера холста (мы хотим изменить размер холстав будущем), мы хотим установить центр холста как точку начала координат, то есть (0, 0) находится в центре холста.Поэтому, когда мышь где-то щелкает, полученная точка измеряется по центру холста.
Может быть, вы скажете:
Canvas.RenderTransformOrigin = (.5,.5)
.Но я не спрашиваю о вращающемся центре, поэтому это не решение. Canvas.RenderTransform = TranslateTransform (Canvas.Width/2.0, Canvas.Height/2.0)
.Но это просто переместит все объекты на холсте в центр.
Вы также можете сказать, почему бы нам просто не перевести точки MouseClick со смещением Canvas.Width/2.0, Canvas.Height/2.0
, а затем перевести ихназад при рендеринге.Мы могли бы сделать это, но слишком много усилий, потому что у нас есть много других операций, которые нужно реализовать, поэтому каждый раз нам приходится переводить туда-сюда.