![](/img/trans.png)
[英]Resize an image in a PictureBox until it is the size of the original image
[英]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);
}
}
有一些問題:
當我將復選框移動到pictureBox1區域內時,選中該復選框即可捕獲並拖動圖像,並且我希望它僅在單擊鼠標左鍵時才能執行。
如果首先使用鼠標滾輪,使圖像尺寸變大或變大,然后單擊圖像以將其拖動(向下移動),或者當我離開它(向上移動)時,嘗試將其周圍拖動,圖像將其尺寸更改回它的原始尺寸。 我希望它保持在我拖動鼠標時用鼠標滾輪更改的尺寸。
我該如何解決這兩個問題?
當您選中復選框時,您可以設置平移模式-只需擺脫該處理程序-就可以了。 因為您還需要在mouseDown處理程序中設置平移模式-基於checkBox狀態。
繪制圖片框時,您正在繪制img,(可能)它是原始圖像。 因此,只需將調整大小后的圖像保存在某個地方並重新繪制即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.