如何摁下鼠标左键,图标(窗体,或者控件)能够随着鼠标移动

经常看图片的时候,打开图片,发现鼠标按住图片后,可以使图片随着鼠标一起移动,于是自己写了一个,实现了这样一个小小的功能。代码如下:

  bool temp = false;//设置一个逻辑变量来标定什么时候激活鼠标移动事件。
        int picX;//图片框的坐标
        int picY;
        int mouseX;//鼠标的当前坐标
        int mouseY;
      //图片框鼠标按下事件
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            temp = true;//一旦按下鼠标,将temp设置为ture,表示鼠标移动事件可以激活了。
            picX = pictureBox1.Location.X;//获取当前图片框的坐标
            picY = pictureBox1.Location.Y;
            mouseX = MousePosition.X;//获取当前鼠标的坐标
            mouseY = MousePosition.Y;
        }
        
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (temp == true)//被激活
            {
                int offsetX = MousePosition.X - mouseX;//鼠标在移动的过程中会和原来按下鼠标的那个点
                int offsetY = MousePosition.Y - mouseY;//的位置,存在x,y上的偏移,计算出来
                mouseX = MousePosition.X;
                mouseY = MousePosition.Y;//这两句的作用是,不断以前一个鼠标坐标作为参考点。每次都是新的
                //鼠标坐标与前一个坐标做比较得到偏差就可以了
                
                 pictureBox1.Location = new Point((pictureBox1.Location.X + offsetX) , (pictureBox1.Location.Y + offsetY) );//使这里的图片的位置动态的随着鼠标的移动而1:1的改变。
            }
        }

这样的方法,可以用到很多场合当中。比如我经常会觉得c#系统自带的窗体边框实在是很丑。那么我们可以去掉边框。到那时去掉边框后,生成的窗体是无法移动的。那么我们也可以像上面使用这样的代码去是窗体能在鼠标的拖动下移动啦!!

每天进步一点点,总会变强的!加油!

你可能感兴趣的:(如何摁下鼠标左键,图标(窗体,或者控件)能够随着鼠标移动)