还是不行哈,鼠标变,能手输出坐标。但是图只是一开始鼠标的位置,不能跟着变。 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 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,且只在各自的函数内部有效,两个是不会冲突的。
{
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();
}是这样吗?
好像还是不行啊
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();
}
还是不行哈,鼠标变,能手输出坐标。但是图只是一开始鼠标的位置,不能跟着变。
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();
}
}