Tag: 平移

使用平移和缩放计算正确的光标位置

我现在一直在搞乱这个问题大约一个小时。 我有一个支持平移和缩放的视口,通过存储X和Y轴的偏移来处理平移。 变焦只是从0.2到14的浮动。 我的问题是我需要能够放置用户在视口中点击的东西,但是当我缩放和平移时鼠标坐标不正确。 我无法弄清楚如何正确计算鼠标坐标。 这是一张显示我目前所拥有的图片: http : //i.imgur.com/WQSXKJ2.png 如您所见,鼠标原点始终位于视口组件的左上角。 您可以在图像的左下角看到平移X和Y偏移以及缩放值。 我还添加了一个与视口左上角相关的鼠标坐标示例。 现在,因为在该图像中它当前放大了我放置的对象将被偏移。 感谢您的时间! 编辑为我的案例工作的解决方案: void Viewport_MouseClick(object sender, MouseEventArgs e){ Point mousePosition = new Point((int)((eX – Pan.X) / Zoom), (int)((eY – Pan.Y) / Zoom)); } 这会计算出正确的“屏幕空间”鼠标位置,同时考虑平移和缩放。 我通过玩TaWs答案得到了解决方案。 感谢您的帮助! 🙂