C# 如何使用填充在C语言的picturebox中移动图像?
我试图通过改变picturebox的填充来用鼠标移动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
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);