在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]);
}
声明:本站所有文章,如无特殊说明或标注,均为网络采集。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。邮箱2297842292@qq.com
评论(0)