【问题标题】:WPF Canvas, accept mousewheel eventsWPF Canvas,接受鼠标滚轮事件
【发布时间】:2013-04-09 08:45:42
【问题描述】:

我有一个自定义的CanvasControl,它绘制了一个地平面。我向CanvasControl 本身添加了一个新的Canvas,这就是我所使用的。我还设置了MouseWheel 事件。

Canvas drawingCanvas = new Canvas();
this.Children.Insert(0, drawingCanvas);
MouseWheel += new MouseWheelEventHandler(Groundplane_MouseWheel);

很多元素都被drawingCanvas 吸引,但从未改变(除了缩放修改),这意味着我想设置IsHitTestVisible = false 以提高性能(增益很大),同时仍然接受MouseWheel 上的事件CanvasControl 本身。不幸的是,当我这样做时,我失去了使用MouseWheel 的能力。我有什么遗漏吗?

drawingCanvas.IsHitTestVisible = false;

【问题讨论】:

    标签: wpf canvas mousewheel


    【解决方案1】:

    为了直接在顶层 Canvas 上获取输入事件,您必须设置其 Background 属性,例如设置为 Transparent

    Background = Brushes.Transparent;
    MouseWheel += Groundplane_MouseWheel;
    

    【讨论】:

    • 有趣.. 这行得通,但是(因为我的 drawingCanvas 被翻译了)现在平移了。我实际上不知道如何解决这个问题?
    • 好吧,您还没有详细解释平移的工作原理。不过我想,您也可以在 CanvasControl 中处理 MouseDownMouseMoveMouseUp 事件,在鼠标移动期间计算适当的平移平移,并将其应用于 drawingCanvas
    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2010-10-03
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多