Я разработал приложение для Windows в C#, где у меня есть pictureBox внутри панели. Я применил функцию увеличения и уменьшения масштаба. Теперь я хочу, чтобы изображение внутри pictureBox панорамировалось. Я применил mouseDown, mouseMove и mouseUp событие на pictureBox. Код для этого:Panning Image in pictureBox не работает
private void pictureBox2_MouseDown(object sender, MouseEventArgs e)
{
if (pflag == 1)
{
dragging = true;
start = e.Location;
}
}
private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
{
// panning code
if (pflag == 1)
{
if (dragging && zoom == 1)
{
pictureBox2.Location = new Point(pictureBox2.Left + (e.Location.X - start.X), pictureBox2.Top + (e.Location.Y - start.Y));
}
}
}
private void pictureBox2_MouseUp(object sender, MouseEventArgs e)
{
if (pflag == 1)
{
dragging = false;
}
}
Здесь изображение панорамируется, но без пограничного контроля. Иногда даже изображение проходит под панелью при панорамировании. Мне нужно здесь, изображение должно перемещаться сверху, влево, вправо, снизу в соответствии с коэффициентом масштабирования, например, как работает полоса прокрутки, а не дальше.
Я пробовал обновлять код в соответствии с вашим комментарием, но все тот же вопрос. Фактически во время масштабирования я увеличиваю размер pictureBox, но размер панели остается таким же. Когда я панорамирую изображение после его увеличения, местоположение pictureBox изменяется без ограничений. Я хочу, чтобы панорамирование соответствовало размеру панели плюс коэффициент масштабирования. 30. Помимо этого предела, если я панорамирую, изображение/изображение не следует перемещать. Функциональность должна быть такой, как полоса прокрутки. За пределами вертикальной и горизонтальной полосы прокрутки изображение нельзя перемещать или перемещать. –
_I хочу, чтобы панорамирование соответствовало размеру панели плюс коэффициент масштабирования, скажем 30._ Это не имеет смысла! Панорамирование всегда должно следовать за мышью, а не быть быстрее или убегать от нее! _ Функциональность должна быть похожа на прокрутку. Ну, это должно пойти в другом направлении, не так ли? Если вы хотите ограничить это, вам просто нужно добавить его в код. Помимо этого он отлично работает здесь: он работает точно так же, как сенсорный экран, когда я перетаскиваю изображение влево, оно следует за кончиком пальца/мышью. – TaW
Можете ли вы, пожалуйста, помочь мне с некоторым кодом, чтобы добавить лимит? –