【发布时间】:2013-12-05 22:49:33
【问题描述】:
在我的代码中,我使用鼠标滚轮调整图片框中的图像大小。
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;
}
}
现在我添加了一个新的复选框,所以如果选中它,我可以在图片框内拖动图像:
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 区域内移动鼠标后选中复选框时,它会捕获并拖动图像,我希望它只有在我左键单击鼠标时才会这样做。
如果我首先使用鼠标滚轮使图像尺寸变小或变大,然后在单击图像拖动它(鼠标向下)或离开它(鼠标向上)时尝试拖动它图像将其大小更改回其原始大小。我希望它保持在我拖动它时用鼠标滚轮更改的大小。
我该如何解决这两个问题?
【问题讨论】: