簡體   English   中英

為什么當我用鼠標拖動pictureBox中的圖像時,它將圖像恢復為原始大小?

[英]Why when i drag with the mouse the image in the pictureBox it return the image to its original size?

在我的代碼中,im使用鼠標滾輪來調整pictureBox中的圖像大小。

void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
        {
            CalculateNewSizeFactor(e.Delta);
            if (pictureBox1.Image != null) pictureBox1.Image.Dispose();
            pictureBox1.Image = null;
            pictureBox1.Image = ResizeImage(new Size((int)(img.Width * factor), (int)(img.Height * factor)));
        }

        public Image ResizeImage(Size size)
        {
            return new Bitmap(img, size);
        }

        private void CalculateNewSizeFactor(int delta)
        {
            if (delta > 0 && factor < 2)
            {
                factor *= increment;
            }
            else if (delta < 0 && factor > 0.25)
            {
                factor /= increment;
            }
        }

現在,我添加了一個新復選框,如果選中該復選框,則可以在pictureBox內拖動圖像:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                panning = true;
            }
        }

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (checkBox1.Checked)
            {
                panning = true;
            }
            startingPoint = new Point(e.Location.X - movingPoint.X,
                                      e.Location.Y - movingPoint.Y);
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            panning = false;
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (panning)
            {
                e.Graphics.Clear(Color.White);
                e.Graphics.DrawImage(img, movingPoint);
            }
        }

有一些問題:

  1. 當我將復選框移動到pictureBox1區域內時,選中該復選框即可捕獲並拖動圖像,並且我希望它僅在單擊鼠標左鍵時才能執行。

  2. 如果首先使用鼠標滾輪,使圖像尺寸變大或變大,然后單擊圖像以將其拖動(向下移動),或者當我離開它(向上移動)時,嘗試將其周圍拖動,圖像將其尺寸更改回它的原始尺寸。 我希望它保持在我拖動鼠標時用鼠標滾輪更改的尺寸。

我該如何解決這兩個問題?

  1. 當您選中復選框時,您可以設置平移模式-只需擺脫該處理程序-就可以了。 因為您還需要在mouseDown處理程序中設置平移模式-基於checkBox狀態。

  2. 繪制圖片框時,您正在繪制img,(可能)它是原始圖像。 因此,只需將調整大小后的圖像保存在某個地方並重新繪制即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM