Tag: pan

视口内图形相对于鼠标坐标的实际坐标

正如我在标题中指出的那样,我已经开始研究一个简单的应用程序,它包含在主框架窗口中,一个双缓冲面板。 在这个面板中可以绘制一些图形,让我们认为这个面板是内部绘制元素的简单视口。 这里添加了两个function,平移和缩放可以使用在MouseDown上更新的delta和Move事件以及OnMouseWheel更新缩放变换来缩放转换和转换内部转换内部的转换。 在尝试添加function以支持在视口内创建节点(图形元素)到缩放大于1(缩放100%)时的精确位置时,真正的问题已经到来。 场景1 – >黄色矩形已正确创建,并且位于鼠标指针位置,如下图所示(比例== 1)。 场景2 – >黄色矩形相对于鼠标位置高度移动,视口比例为aprox。 40%,如下图所示(比例== 1.4)。 红色填充的圆圈是鼠标按下的(光标位置保持不变,只进行了缩放)。 测试场景 – >在发布之前我尝试了很多方法而没有成功,这是其中之一: 我非常感谢任何类型的输入,甚至是与更改OXY图形方法相关的想法(因为翻译函数使用相对坐标)。

如何在PictureBox中平移图像

我有一个自定义PictureBox ,可以使用MouseWheel事件放大。 现在我想为它添加一个平移function。 我的意思是当PictureBox处于缩放状态时,如果用户点击并保持点击然后移动鼠标,图像将在图片框内平移。 这是我的代码,但不幸的是它不起作用! 我不知道在哪里看… private Point _panStartingPoint = Point.Empty; private bool _panIsActive; private void CurveBox_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Focus(); _panIsActive = true; _panStartingPoint = e.Location; } } private void CurveBox_MouseUp(object sender, MouseEventArgs e) { _panIsActive = false; } private void CurveBox_MouseLeave(object sender, EventArgs e) { _panIsActive = […]

从屏幕上的鼠标光标位置获取图像坐标(WPF图像控件)

我正在寻找一个透明地为WPF图像控件添加平移和缩放function的解决方案,我找到了由WiesławŠoltés和Konrad Viltersten开发的解决方案https://stackoverflow.com/a/6782715/584180 ,这是非常出色的。 现在我想在控件中添加一个“鼠标点击”事件,以便我可以在原始图像坐标系中点击点击的坐标,这样我就可以使用它们来检索像素颜色。 我知道会有一些舍入,如果图像缩小,颜色将与屏幕上显示的实际颜色不对应。 我也明白,用户可能会在图像边框外单击,在这种情况下,我希望返回空点或负坐标。 我不是C#进行转换的方法的专家,目前我仍然坚持这一点(要在ZoomBorder.cs类中添加): public Point GetImageCoordsAt(MouseButtonEventArgs e) { if (child != null) { var tt = GetTranslateTransform(child); var mousePos = e.GetPosition(this); var transformOrigin = new Point(tt.X, tt.Y); return mousePos; // Wrong: how do I transform this? } return null; }