繁体   English   中英

如何在C#中使用填充在图片框内移动图像?

[英]How can I use padding to move an image inside a picturebox in C#?

我正在尝试通过更改图片框的填充来用鼠标在图片框内移动图像。 我可以移动图像,但是移动得太多 这是我到目前为止所得到的:

private bool mouseDown;
private Point lastLocation;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        mouseDown = true;
        lastLocation = e.Location;
    }
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouseDown == true)
    {
        int dx = e.X - lastLocation.X;
        int dy = e.Y - lastLocation.Y;
        pictureBox1.Padding = new Padding(pictureBox1.Padding.Left + dx,
                                     pictureBox1.Padding.Top + dy, 0, 0);
        pictureBox1.Invalidate();
    }
}

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

在帮助下,我找到了解决方案:

在MouseMove下,我替换了

pictureBox1.Padding = new Padding(pictureBox1.Padding.Left + dx,
                                 pictureBox1.Padding.Top + dy, 0, 0);

pictureBox1.Padding = new Padding(Padding.Left + dx, Padding.Top + dy, 0, 0);

我认为这是因为您每次添加更多填充时都通过引用当前填充来添加更多填充:

   pictureBox1.Padding = new Padding(pictureBox1.Padding.Left + dx,
                                 pictureBox1.Padding.Top + dy, 0, 0);

请尝试:

   pictureBox1.Padding = new Padding(dx, dy, 0, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM