积极答复者
C#2008 获取点击PictureBox控件时在PictureBox中的坐标值

问题
答案
-
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { int originalWidth = this.pictureBox1.Image.Width; int originalHeight = this.pictureBox1.Image.Height; PropertyInfo rectangleProperty = this.pictureBox1.GetType().GetProperty("ImageRectangle", BindingFlags.Instance | BindingFlags.NonPublic); Rectangle rectangle = (Rectangle)rectangleProperty.GetValue(this.pictureBox1, null); int currentWidth = rectangle.Width; int currentHeight = rectangle.Height; double rate = (double)currentHeight / (double)originalHeight; int black_left_width = (currentWidth == this.pictureBox1.Width) ? 0 : (this.pictureBox1.Width - currentWidth) / 2; int black_top_height = (currentHeight == this.pictureBox1.Height) ? 0 : (this.pictureBox1.Height - currentHeight) / 2; int zoom_x = e.X - black_left_width; int zoom_y = e.Y - black_top_height; double original_x = (double)zoom_x * rate; double original_y = (double)zoom_y * rate; StringBuilder sb = new StringBuilder(); sb.AppendFormat("原始尺寸{0}/{1}(宽/高)\r\n", originalWidth, originalHeight); sb.AppendFormat("缩放状态图片尺寸{0}/{1}(宽/高)\r\n", currentWidth, currentHeight); sb.AppendFormat("缩放比率{0}\r\n", rate); sb.AppendFormat("左留白宽度{0}\r\n", black_left_width); sb.AppendFormat("上留白高度{0}\r\n", black_top_height); sb.AppendFormat("当前鼠标坐标{0}/{1}(X/Y)\r\n", e.X, e.Y); sb.AppendFormat("缩放图中鼠标坐标{0}/{1}(X/Y)\r\n", zoom_x, zoom_y); sb.AppendFormat("原始图中鼠标坐标{0}/{1}(X/Y)\r\n", original_x, original_y); this.label1.Text = sb.ToString(); }
知识改变命运,奋斗成就人生!- 已标记为答案 pucx 2010年8月31日 13:21
全部回复
-
你好!
MouseClick 事件中事件参数 MouseEventArgs 中可以获取 X,Y 坐标。
private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { // 点击时记录坐标 int x = e.X; int y = e.Y; if (MessageBox.Show("你确定吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // 执行你的方法,无须模拟鼠标动作 // YourMethod(x,y); } }
知识改变命运,奋斗成就人生! -
musemove事件判断坐标,提示tooltip
http://feiyun0112.cnblogs.com/ -
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { int originalWidth = this.pictureBox1.Image.Width; int originalHeight = this.pictureBox1.Image.Height; PropertyInfo rectangleProperty = this.pictureBox1.GetType().GetProperty("ImageRectangle", BindingFlags.Instance | BindingFlags.NonPublic); Rectangle rectangle = (Rectangle)rectangleProperty.GetValue(this.pictureBox1, null); int currentWidth = rectangle.Width; int currentHeight = rectangle.Height; double rate = (double)currentHeight / (double)originalHeight; int black_left_width = (currentWidth == this.pictureBox1.Width) ? 0 : (this.pictureBox1.Width - currentWidth) / 2; int black_top_height = (currentHeight == this.pictureBox1.Height) ? 0 : (this.pictureBox1.Height - currentHeight) / 2; int zoom_x = e.X - black_left_width; int zoom_y = e.Y - black_top_height; double original_x = (double)zoom_x * rate; double original_y = (double)zoom_y * rate; StringBuilder sb = new StringBuilder(); sb.AppendFormat("原始尺寸{0}/{1}(宽/高)\r\n", originalWidth, originalHeight); sb.AppendFormat("缩放状态图片尺寸{0}/{1}(宽/高)\r\n", currentWidth, currentHeight); sb.AppendFormat("缩放比率{0}\r\n", rate); sb.AppendFormat("左留白宽度{0}\r\n", black_left_width); sb.AppendFormat("上留白高度{0}\r\n", black_top_height); sb.AppendFormat("当前鼠标坐标{0}/{1}(X/Y)\r\n", e.X, e.Y); sb.AppendFormat("缩放图中鼠标坐标{0}/{1}(X/Y)\r\n", zoom_x, zoom_y); sb.AppendFormat("原始图中鼠标坐标{0}/{1}(X/Y)\r\n", original_x, original_y); this.label1.Text = sb.ToString(); }
知识改变命运,奋斗成就人生!- 已标记为答案 pucx 2010年8月31日 13:21