C# 如何使用填充在C语言的picturebox中移动图像?

C# 如何使用填充在C语言的picturebox中移动图像?,c#,winforms,C#,Winforms,我试图通过改变picturebox的填充来用鼠标移动picturebox中的图像。我可以移动图像,但它无法移动。到目前为止,我得到的是: private bool mouseDown; private Point lastLocation; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { mouse

我试图通过改变picturebox的填充来用鼠标移动picturebox中的图像。我可以移动图像,但它无法移动。到目前为止,我得到的是:

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

我认为这是因为每次添加更多填充时,都会参考当前填充来添加更多填充:

   pictureBox1.Padding = new Padding(pictureBox1.Padding.Left + dx,
                                 pictureBox1.Padding.Top + dy, 0, 0);
请尝试:

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

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

在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);