在C# Winform中,实现Picture的拖动可以通过以下步骤:
- 在窗体中添加一个PictureBox控件,并设置其AllowDrop属性为true。
- 在PictureBox的MouseDown事件中,记录鼠标按下时的坐标。
- 在PictureBox的MouseMove事件中,判断鼠标左键是否按下,如果按下则计算鼠标移动的距离,并将PictureBox的Location属性设置为当前位置加上移动距离。
- 在PictureBox的DragEnter事件中,判断拖拽的数据是否为图片格式,如果是则允许拖拽。
- 在PictureBox的DragDrop事件中,获取拖拽的图片,并将其显示在PictureBox中。
以下是示例代码:
复制代码private Point mouseOffset;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOffset = new Point(-e.X, -e.Y);
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
pictureBox1.Location = pictureBox1.Parent.PointToClient(mousePos);
}
}
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (Path.GetExtension(files[0]).ToLower() == ".jpg" || Path.GetExtension(files[0]).ToLower() == ".png")
{
e.Effect = DragDropEffects.Copy;
}
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
pictureBox1.Image = Image.FromFile(files[0]);
}
声明:
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!