Как увеличить масштаб с помощью мыши на этом изображении
У меня есть библиотека userControl, которая состоит из основной панели и PictureBox, я хочу создать масштабируемый инструмент PictureBox, я увеличиваю и уменьшаю масштаб с помощью события mouseWheel на главной панели, проблему, которую я не могу понять, как мне увеличивать в соответствии с положением мыши на изображении, поэтому всякий раз, когда я увеличиваю изображение, масштабирование переходит в верхний левый угол панели, так как мне это исправить?
private double ZOOMFACTOR = 1.15; // = 15% smaller or larger
private int MINMAX = 5;
void picPanel_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta > 0)
{
ZoomIn();
}
else
{
ZoomOut();
}
}
private void ZoomIn()
{
if ((picBox.Width < (MINMAX * this.Width)) &&
(picBox.Height < (MINMAX * this.Height)))
{
picBox.Width = Convert.ToInt32(picBox.Width * ZOOMFACTOR);
picBox.Height = Convert.ToInt32(picBox.Height * ZOOMFACTOR);
}
}
private void picBox_MouseEnter(object sender, EventArgs e)
{
if (picBox.Focused) return;
picBox.Focus();
}
Update :
Я пробовал это, похоже, работает, но не совсем так, как должно быть !! Есть идеи?
private void ZoomIn()
{
if ((picBox.Width < (MINMAX * this.Width)) &&
(picBox.Height < (MINMAX * this.Height)))
{
picBox.Width = Convert.ToInt32(picBox.Width * ZOOMFACTOR);
picBox.Height = Convert.ToInt32(picBox.Height * ZOOMFACTOR);
Point p = this.AutoScrollPosition;
int deltaX = e.X - p.X;
int deltaY = e.Y - p.Y;
this.AutoScrollPosition = new Point(deltaX, deltaY);
}
}