日期:2014-05-17  浏览次数:20986 次

图片怎么样随着鼠标的坐标移动
 private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
          this.Text = string.Format("鼠标位置:({0},{1})", e.X, e.Y);
        }
       

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics dc = e.Graphics;
            Pen blue = new Pen(Color.Blue, 3);
            dc.DrawRectangle(blue, e.X,e.Y, 50, 50);
        }

在mousemove里面可以获得鼠标坐标。

我画图时需要用到鼠标的坐标,就是随着鼠标的移动图片也移动。
鼠标放开后,画图。

但是e.X和e.Y不能被外部的调用,onpaint也有参数e。

请问什么思路?

------解决方案--------------------
定义个字段记录 Point  Form1_MouseMove 设置其值 后调用 this.Invalidate();
------解决方案--------------------
你想移动图片就必须把鼠标移动的增量加到图片的位置属性上,这样才能改变图片的位置,实现图片跟着鼠标移动。
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;
            }
        }
------解决方案--------------------
关于“但是e.X和e.Y不能被外部的调用,onpaint也有参数e”
你可以在类中定义一个私有变量将e.X和e.Y的值传过去,这样在类中的其它位置就可以调用了。
虽然onpaint也有参数e,但这是不同的e,且只在各自的函数内部有效,两个是不会冲突的。

------解决方案--------------------
http://msdn.microsof