Я добавил окно изображения внутри панели вкладок. Я пытаюсь применить операцию увеличения и уменьшения масштаба. На самом деле обе операции работают нормально, но я хочу увеличить масштаб и уменьшить масштаб работы, которая работает с мышью. означает увеличение/уменьшение изображения в месте расположения курсора или в позиции мыши.
Мой код ниже
protected override void OnMouseWheel(MouseEventArgs e)
{
if (_isZoomInFlag == true)
{
zoomInt++;
if (zoomInt > 4)
{
zoomInt = 4;
}
zoomPicturebox();
}
if (_isZoomOutFlag == true)
{
zoomInt--;
if (zoomInt == -3)
{
zoomInt = -2;
}
zoomPicturebox();
}
}
public void zoomPicturebox()
{
pbDisplay.Width = picWidth;
pbDisplay.Height = picHeight;
switch (zoomInt)
{
case -2:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 0.25);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
break;
case -1:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 0.5);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
break;
case 0:
pbDisplay.Width = picWidth;
pbDisplay.Height = picHeight;
break;
case 1:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 1.1);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
break;
case 2:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 1.5);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
break;
case 3:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 1.75);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
// lblZoom.Text = ("Zoom = 175%");
break;
case 4:
pbDisplay.Width = Convert.ToInt32(((double)pbDisplay.Width) * 2);
pbDisplay.Height = Convert.ToInt32(((double)pbDisplay.Width) * picRatio);
break;
}
pbDisplay.Update();
}
Увеличить изображение
Уменьшить изображение
picturebox имеет событие MouseWheel, но сначала вам нужно сфокусировать внимание.
public Form1()
{
InitializeComponent();
pictureBox1.MouseWheel += pictureBox1_MouseWheel;
}
void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
if(e.Delta > 0)
{
//up
}
else
{
//down
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
pictureBox1.Focus();
}
здесь, в событии mousedown, придайте ему фокус и активируйте событие колеса. то вы можете сделать это в своем коде.