【发布时间】:2018-11-16 13:14:06
【问题描述】:
正如我在标题中指定的那样,我已经开始研究一个简单的应用程序,它包含在主框架窗口中,一个双缓冲面板。在这个面板内部可以绘制一些图形,让我们考虑这个面板是一个简单的视口,用于绘制里面的元素。
这里添加了两个功能,平移和缩放可以缩放变换和使用在 MouseDown 和 Move 事件上更新的增量以及用于更新缩放变换的 OnMouseWheel 在绘制事件中平移变换。
在尝试添加功能以支持在缩放大于 1(缩放 100%)时在视口内创建节点(图形元素)到精确位置后,真正的问题出现了。
场景 1 -> 黄色矩形已正确创建,并准确定位在鼠标指针位置,如下图所示(比例 == 1)。
场景 2 -> 黄色矩形相对于鼠标位置高度偏移,视口比例为 aprox。 40%,如下图所示(比例 == 1.4)。红色实心圆圈为鼠标按下(光标位置不变,仅进行了缩放)。
测试场景 -> 在发帖之前我尝试了很多方法都没有成功,这是其中之一:
我非常感谢任何类型的输入,甚至是与更改 OXY 图形方法相关的想法(因为平移函数使用相对坐标)。
【问题讨论】:
-
您需要将鼠标点转换为图像点的缩放/取消缩放功能吗?你能显示 Graphics.xxxTransForms 吗?
标签: c# graphics zooming viewport pan