Как в дочерней форме правильно найти координаты курсора в относительно самой дочерней формы для приближения картинки Winforms MDI C#
Пишу приложение для открытия картинок через MDI WinForms. И в приложении мне нужно сделать приближение картинки через инструмент "лупа".
Для отображение картинки в этом приложении я использую объект Graphics.
Отображение картинки идет со смещением, потому что отсчет объекта Cursor идет относительно родительской формы(как я понял), а мне нужно, чтобы было относительно дочерней. То есть, ошибка идет при вычислении места, относительно которого затем выполняется приближение(перерисовка) картинки.
Я пытался что-то придумать, и всё, что у меня вышло - приведено в коде ниже. Так же прилаживаю пару скринов этого бага.
Пример кода ниже:
graphics - поле, что содержит графику;
ImageBuffer - поле, в которой лежит картинка(Bitmap), что отображается в дочернем окне;
coefficient - коэффициент, на который увеличивается картинка;
parent - родительская форма
graphics.DrawImage(ImageBuffer,
-Cursor.Position.X + ImageBuffer.Width + parent.PointToScreen(Location).X,
-Cursor.Position.Y + ImageBuffer.Height + parent.PointToScreen(Location).Y,
ImageBuffer.Width * coefficient,
ImageBuffer.Height * coefficient);
Нажимаем на точечку, к которой ведет стрелочка:
Получаем такую картинку:
Хотя, мы должны были приблизиться к той точке, на груди. Она должна была быть в центре. Заранее благодарю, за помощь!
Ответы (1 шт):
Вот так я изменил свою формулу отображения:
Point cursor = PointToClient(Cursor.Position);
graphics.DrawImage(
ImageBuffer,
-cursor.X,
-cursor.Y,
ClientRectangle.Width * coefficient,
ClientRectangle.Height * coefficient);
И картинка корректно растянулась и начала отображаться на форме. Приближаться так же начала корректно.

