Как увеличить и уменьшить изображение, используя положение мыши на этом изображении

1

Я добавил окно изображения внутри панели вкладок. Я пытаюсь применить операцию увеличения и уменьшения масштаба. На самом деле обе операции работают нормально, но я хочу увеличить масштаб и уменьшить масштаб работы, которая работает с мышью. означает увеличение/уменьшение изображения в месте расположения курсора или в позиции мыши.

Мой код ниже

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();
        }

Увеличить изображение

Изображение 174551

Уменьшить изображение

Изображение 174551

  • 0
    означает увеличение / уменьшение изображения в позиции курсора или мыши. Я не знаю, что это значит
  • 0
    @Rang Да увеличение / уменьшение обработки положения курсора мыши, когда я попробовал эту функцию, фактическое положение мыши находится в другом месте и увеличение / уменьшение масштаба в другом месте. Я хочу обрабатывать увеличение / уменьшение в месте расположения курсора мыши.
Показать ещё 4 комментария
Теги:
winforms
picturebox

1 ответ

0
Лучший ответ

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, придайте ему фокус и активируйте событие колеса. то вы можете сделать это в своем коде.

  • 0
    на самом деле нет никаких изменений, его функциональность работает так же, как и я, так как я хочу увеличить и уменьшить масштаб колесика мыши в месте расположения курсора
  • 0
    Я не вижу ничего в коде, который позволил бы увеличить масштаб в позиции курсора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню