WPF Canvas : centered origin, 缩放轴(和 y 反转),响应鼠标事件

标签 wpf canvas mouseevent

在我正在编写的一个简单的纯代码 WPF 应用程序中,我想要一个自定义的 Canvas

我在 StackOverflow 中发现了与此类似的问题,但找不到确切的问题,也找不到针对我的特定问题调整另一个答案的简单方法(请注意,我在 WPF 方面经验不多)。

在我的 Canvas 中,我希望它具有以下属性:

  1. 点 (0, 0) 位于 Canvas 的中心;
  2. x轴指向右边;
  3. y轴指向顶部;
  4. 点 (1, 0) 位于原点右侧约 1 英寸处;和
  5. 在每个事件中,鼠标的位置都在上面定义的坐标系中给出。

this answer , Ray Burns 针对我的前 3 点提出了一个非常简单的解决方案。修改该代码使其也处理我的第 4 点是微不足道的(将 RenderTransform 中的 1-1 更改为其他常量)。

然而,对于许多问题来说,这个非常简单和优秀的解决方案是基于将宽度和高度设置为 0,并将 Canvas 居中放置在其容器上。因此,没有 Canvas 来捕获点击等事件,因此该解决方案不会处理我的第五个属性。

实现此目标的最简单方法是什么?继承自 Panel 并手动完成所有操作?继承Canvas,拦截每一个事件并修改坐标?

最佳答案

Canvas 放在 Border 中。 Border 有鼠标事件。另一种情况是将 Border 放在 Canvas 的顶部。

关于WPF Canvas : centered origin, 缩放轴(和 y 反转),响应鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2235790/

相关文章:

c# - WCF/REST 将图像放入图片框?

WPF 弹出窗口夺走了所有者的焦点

c# - 保存文件对话框 - 路径无效

WPF - ScrollView 困惑

jquery - 有没有办法制作穿孔文本?

gwt - FabricJS 点击事件

javascript - 如何让车子朝怪物方向行驶

java - Swing - 从按钮类获取主窗口类实例

c# - 通过 Windows 窗体发送用户输入

c++ - 在Qt中的QWebView中模拟鼠标点击?