图片怎么样随着鼠标的坐标移动
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