Вызов функции при масштабировании холста - PullRequest
1 голос
/ 13 ноября 2011

У меня есть UserControl, который содержит Canvas.Canvas можно панорамировать и увеличивать и уменьшать масштаб правильно.Я также оставляю небольшой пользовательский элемент управления, который отображает содержимое большого пользовательского элемента управления в виде маленького прямоугольника, отображающего пользователю то, на что он в данный момент смотрит (размер / расположение этого прямоугольника обновляется всякий раз, когда пользователь перемещает / увеличивает основной элемент управления пользователя)

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

public Point GetTopLeftOffset()
{
  Point topLeft = PointToScreen(new Point(0, 0));
  return m_mainCanvas.PointFromScreen(topLeft);
}

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

Если кто-то может сказать мне, почему значение является неправильным при увеличении или уменьшении и как исправитьэто было бы очень здорово!

Спасибо!

Вот изображение чего-то идентичного тому, над чем я работаю: (Curtesy of WPF-Graphics.com) This is a WPF control showing a main image, and a small thumb with a viewport rectangle showing the user what he's looking at

...