【发布时间】:2012-05-15 11:01:16
【问题描述】:
我需要鼠标指针在 PictureBox 上的精确位置。
我使用 PictureBox 的 MouseMove 事件。
在这个 PictureBox 上,我使用“缩放”属性来显示图像。
在原始(未缩放)图像上获取鼠标位置的正确方法是什么?
有没有办法找到比例因子并使用它?
我认为需要使用 imageOriginalSize/imageShowedSize 来检索这个比例因子。
我使用这个功能:
float scaleFactorX = mypic.ClientSize.Width / mypic.Image.Size.Width;
float scaleFactorY = mypic.ClientSize.Height / mypic.Image.Size.Height;
是否可以使用该值来获取光标在图像上的正确位置?
【问题讨论】:
-
我想你可以试试: Point cursorPosition = mypic.PointToClient(Cursor.Position);点 positionOverImage = new Point(cursorPosition.X / scaleFactorX, cursorPosition.Y / scaleFactorY);。但是,我想当您使用这种方法计算缩放因子时,可能会出现一些准确性问题。我建议您自行缩放图像。
-
谢谢,但不起作用。位置不正确,使用pointtoclient和eventmouseargs位置时我得到相同的值。
-
请贴出代码 sn-p 计算您当前使用的坐标。
-
矩形 sourceRec = new Rectangle((int)(e.X / currentScale), (int)(e.Y / currentScale), 1, 1);
-
当您说您需要鼠标相对于未拉伸图像的坐标时,您希望未拉伸图像具有的锚点是什么?是固定在左上角吗?锚定在中心?
标签: c# winforms zooming mouseover picturebox