zoukankan      html  css  js  c++  java
  • C# 图片框跟随鼠标移动

          先贴上代码

       private bool isMouseDown = false;
            private Point mouseOffset; //记录鼠标指针的坐标

            private void PicBox_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    mouseOffset.X = e.X;
                    mouseOffset.Y = e.Y;
                    isMouseDown = true;
                }
            }

            private void PicBox_MouseMove(object sender, MouseEventArgs e)
            {
                if (isMouseDown)
                {
                    int left = PicBox.Left + e.X - mouseOffset.X;
                    int top = PicBox.Top + e.Y - mouseOffset.Y;
                    PicBox.Location = new Point(left,top);
                }
            }

            private void PicBox_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    isMouseDown = false;
                }
            }

       事件中的 MouseEventArgs e :

      根据e得到的坐标,不是鼠标相对与Form左上角的坐标,而是相对于图片框的左上角坐标,所以算鼠标偏移量的时候,只要计算两次事件对象e中的坐标的差值!

      保存鼠标按下时相对于图片框左上角的坐标

                    mouseOffset.X = e.X;
                    mouseOffset.Y = e.Y;

      移动时得到偏移量

                    e.X - mouseOffset.X;
                    e.Y - mouseOffset.Y;

         算出图片框的新位置

                    int left = PicBox.Left + e.X - mouseOffset.X;
                    int top = PicBox.Top + e.Y - mouseOffset.Y;

      

  • 相关阅读:
    vscode的settings.json最新配置
    RSA和AES混合使用的原理
    自己手动配置脚手架webpack完整详细版(一)
    MySQL下载安装教程完整版
    解决这三个问题的方法:abandon后重提代码、给sourcetree重加工程、ideal上查找历史版本代码、
    synchronized关键字,Lock对象,阻塞队列问题
    volatile关键字
    Python-根据成绩分析是否继续深造
    R语言-美国枪杀案分析
    R语言-ggplot初级
  • 原文地址:https://www.cnblogs.com/CPFlying/p/1745750.html
Copyright © 2011-2022 走看看