111,092
社区成员




虽然不晓得楼主要做什么样的程序,若是图片上绘图软件的话,建议不要使用picturebox,而是重写panel,实现无刷新缓存重绘图片,精确控制坐标点!
即便 图片在 picturebox 中居中,计算偏移也是很简单的。不就是多加一项吗?
最简单的办法当然还是让picturebox适应图片大小,这样坐标就完全一致了 否则你需要根据图片大小和picturebox的大小自己计算偏差
(a-b)/2
1、将改为this.MouseMove += new MouseEventHandler(Form1_MouseMove); this.MouseDown += new MouseEventHandler(Form1_MouseDown); this.MouseUp += new MouseEventHandler(Form1_MouseUp);
此时已解决了 this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 是的鼠标错位问题this.pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove); this.pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown); this.pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
1、将改为this.MouseMove += new MouseEventHandler(Form1_MouseMove); this.MouseDown += new MouseEventHandler(Form1_MouseDown); this.MouseUp += new MouseEventHandler(Form1_MouseUp);
此时已解决了 this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 是的鼠标错位问题this.pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove); this.pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown); this.pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
1、将改为this.MouseMove += new MouseEventHandler(Form1_MouseMove); this.MouseDown += new MouseEventHandler(Form1_MouseDown); this.MouseUp += new MouseEventHandler(Form1_MouseUp);
此时已解决了 this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 是的鼠标错位问题this.pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove); this.pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown); this.pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
this.MouseDown += new MouseEventHandler(Form1_MouseDown);
this.MouseUp += new MouseEventHandler(Form1_MouseUp);
改为 this.pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove);
this.pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown);
this.pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
此时已解决了 this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 是的鼠标错位问题用鼠标的窗体事件可以实现,不要用picturebox
[quote=引用 11 楼 xuzuning 的回复:] 由于 Image 在 PictureBox 中居中 所以 Image 相对 PictureBox 原点的坐标是 ( (PictureBox.Width - PictureBox.Image.Width) / 2, (PictureBox.Height - PictureBox.Image.Height) / 2 ) 由于你的鼠标坐标是参照 Form 的, 而 PictureBox 的原点可能不与 Form 的原点重合 所以鼠标相对 PictureBox 原点的坐标是 ( e.X - PictureBox.Left, e.Y - PictureBox.Top ) 两式合起来就是鼠标相对 Image 的坐标 希望你能理解
[quote=引用 11 楼 xuzuning 的回复:] 由于 Image 在 PictureBox 中居中 所以 Image 相对 PictureBox 原点的坐标是 ( (PictureBox.Width - PictureBox.Image.Width) / 2, (PictureBox.Height - PictureBox.Image.Height) / 2 ) 由于你的鼠标坐标是参照 Form 的, 而 PictureBox 的原点可能不与 Form 的原点重合 所以鼠标相对 PictureBox 原点的坐标是 ( e.X - PictureBox.Left, e.Y - PictureBox.Top ) 两式合起来就是鼠标相对 Image 的坐标 希望你能理解
由于 Image 在 PictureBox 中居中 所以 Image 相对 PictureBox 原点的坐标是 ( (PictureBox.Width - PictureBox.Image.Width) / 2, (PictureBox.Height - PictureBox.Image.Height) / 2 ) 由于你的鼠标坐标是参照 Form 的, 而 PictureBox 的原点可能不与 Form 的原点重合 所以鼠标相对 PictureBox 原点的坐标是 ( e.X - PictureBox.Left, e.Y - PictureBox.Top ) 两式合起来就是鼠标相对 Image 的坐标 希望你能理解