У меня есть 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)