定义个字段记录 Point  Form1_MouseMove 设置其值 后调用 this.Invalidate();

解决方案 »

  1.   

    你想移动图片就必须把鼠标移动的增量加到图片的位置属性上,这样才能改变图片的位置,实现图片跟着鼠标移动。
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                pt = Cursor.Position;
                pictureBox1.Focus();
            }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    int px = Cursor.Position.X - pt.X;
                    int py = Cursor.Position.Y - pt.Y;
                    pictureBox1.Location = new Point(pictureBox1.Location.X + px, pictureBox1.Location.Y + py);
                    pt = Cursor.Position;
                }
            }
      

  2.   

    关于“但是e.X和e.Y不能被外部的调用,onpaint也有参数e”
    你可以在类中定义一个私有变量将e.X和e.Y的值传过去,这样在类中的其它位置就可以调用了。
    虽然onpaint也有参数e,但这是不同的e,且只在各自的函数内部有效,两个是不会冲突的。
      

  3.   

    我是来接分的..var mouseClientPosition = myControl1.PointToClient(MousePosition); // myControl1 (控件 or 窗体)
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.forms.control.mouseposition(v=vs.110).aspx
      

  5.   

            Point Form1_MouseMove;        public Form1()
            {
                InitializeComponent();        }        private void panel1_Paint(object sender, PaintEventArgs e)
            {
                this.Invalidate();
                base.OnPaint(e);
                Graphics dc = e.Graphics;
                Pen blue = new Pen(Color.Blue, 3);
                dc.DrawRectangle(blue, Form1_MouseMove.X, Form1_MouseMove.X, 50, 50);
              
            }        private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
              
              Form1_MouseMove.X = e.X;
              Form1_MouseMove.Y = e.Y;
              this.Text = string.Format("鼠标位置:({0},{1})", Form1_MouseMove.X, Form1_MouseMove.Y);
              this.Invalidate();
            }是这样吗?
    好像还是不行啊
      

  6.   


     private void panel1_Paint(object sender, PaintEventArgs e)
            {
                Graphics dc = e.Graphics;
                Pen blue = new Pen(Color.Blue, 3);
                dc.DrawRectangle(blue, Form1_MouseMove.X, Form1_MouseMove.Y, 50, 50);      
            }
     
            private void panel1_MouseMove(object sender, MouseEventArgs e)
            {       
              Form1_MouseMove.X = e.X;
              Form1_MouseMove.Y = e.Y;
              this.Text = string.Format("鼠标位置:({0},{1})", Form1_MouseMove.X, Form1_MouseMove.Y);
              this.Invalidate();
            }
      

  7.   


    还是不行哈,鼠标变,能手输出坐标。但是图只是一开始鼠标的位置,不能跟着变。
     public partial class Form1 : Form
        {        Point Form1_MouseMove;
                 public Form1()
            {
                InitializeComponent();        }        private void panel1_Paint(object sender, PaintEventArgs e)
            {
                Graphics dc = e.Graphics;
                Pen blue = new Pen(Color.Blue, 3);
                dc.DrawRectangle(blue, Form1_MouseMove.X, Form1_MouseMove.Y, 50, 50);  
                
            }        private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                Form1_MouseMove.X = e.X;
                Form1_MouseMove.Y = e.Y;
                this.Text = string.Format("鼠标位置:({0},{1})", Form1_MouseMove.X, Form1_MouseMove.Y);
                this.Invalidate();
           
            }        
        }
      

  8.   

    变量名改规范点吧 Form1_MouseMove==》ptMousePosition