wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows窗体中操作拖放图像c#大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试编写一个程序,允许用户将图像拖放到程序中,然后能够选择图像,移动图像,重新调整大小,裁剪图像等. 到目前为止,我已经创建了一个由面板组成的窗体.用户可以将图片文件拖到面板上,并且当鼠标被丢弃并且图片被加载到图片框中时,将在鼠标坐标处创建图片框.我可以用这种方式添加几个图像. 现在我想让用户操作并移动他们放入面板的图像. 我试过寻找解决方案,但似乎无法找到我理解的答案. 任何帮助深表感谢.
我正在尝试编写一个程序,允许用户将图像拖放到程序中,然后能够选择图像,移动图像,重新调整大小,裁剪图像等.

到目前为止,我已经创建了一个由面板组成的窗体.用户可以将图片文件拖到面板上,并且当鼠标被丢弃并且图片被加载到图片框中时,将在鼠标坐标处创建图片框.我可以用这种方式添加几个图像.

现在我想让用户操作并移动他们放入面板的图像.

我试过寻找解决方案,但似乎无法找到我理解的答案.

任何帮助深表感谢..

这是我目前的代码

private void panel1_DragEnter(object sender,DragEventArgs E)
    {
        e.Effect = DragDropEffects.All;
    }



    private void panel1_DragDrop(object sender,DragEventArgs E)
    {
        String[] imagePaths = (String[])e.Data.GetData(DataFormats.FileDrop);
        foreach (String path in imagePaths)
        {
            Point point = panel1.PointToClient(cursor.Position);

            PictureBox pb = new PictureBox();
            pb.ImageLOCATIOn = path;
            pb.Left = point.X;
            pb.Top = point.Y;

            panel1.Controls.Add(pb);

            //g.DrawImage(Image.FromFile(path),point);
        }

    }

解决方法

您可以在用户最初单击时获取鼠标位置,然后在PictureBox的MouseMove事件中跟踪鼠标位置.您可以将这些处理程序附加到多个PictureBox.

privatE int xPos;
privatE int yPos;

private void pb_MouseDown(object sender,MouseEventArgs E)
{
    if (e.button == MouseButtons.Left)
    {
       xPos = e.X;
       yPos = e.Y;
    }
}

private void pb_MouseMove(object sender,MouseEventArgs E)
{
    PictureBox p = sender as PictureBox;

    if(p != null)
    {
        if (e.button == MouseButtons.Left)
        {
            p.Top += (e.Y - yPos);
            p.Left +=  (e.X - xPos);
        }
    }
}

对于动态PictureBoxes,您可以像这样附加处理程序

PictureBox dpb = new PictureBox();
dpb.MouseDown += pb_MouseDown;
dbp.MouseMove += pb_MouseMove;
//fill the rest of the properties...

大佬总结

以上是大佬教程为你收集整理的在Windows窗体中操作拖放图像c#全部内容,希望文章能够帮你解决在Windows窗体中操作拖放图像c#所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。