2017-06-29 85 views
1

我有一個SciChartSurface,我支持縮放如下:定期滾動如何使用觸控板/水平滾輪支持橫向滾動?

  • 變焦x軸。上滾動
  • 變焦y軸+ CTRL
  • 潘上滾動x軸+ Shift

我想也能夠在X方向上平移時,所述用戶無論是水平滾動上的觸控板或使用水平滾輪(拇指輪)。但是,我不知道如何去做這件事。

這是我一直在使用的擴展MouseWheelZoomModifier。我能以某種方式向我發送關於滾動行爲的信息嗎?我能以某種方式將橫向/橫向滾動視爲Shift +滾動嗎?謝謝!

/// <summary> 
/// Extended <see cref="MouseWheelZoomModifier"/> which modifies zoom 
/// behavior based on modifier keys so that scrolling while holding CTRL 
/// zooms vertically and doing so while holding SHIFT pans horizontally. 
/// </summary> 
class MouseWheelZoomModifierEx : MouseWheelZoomModifier { 
    public override void OnModifierMouseWheel(ModifierMouseArgs e) { 
     switch (e.Modifier) { 
      case MouseModifier.Ctrl: 
       ActionType = ActionType.Zoom; 
       XyDirection = XyDirection.YDirection; 
       break; 
      case MouseModifier.Shift: 
       ActionType = ActionType.Pan; 
       XyDirection = XyDirection.XDirection; 
       break; 
      default: 
       ActionType = ActionType.Zoom; 
       XyDirection = XyDirection.XDirection; 
       break; 
     } 

     // e.Modifier is set to None so that the base implementation of 
     // OnModifierMouseWheel doesn't change ActionType and XyDirection again. 
     e.Modifier = MouseModifier.None; 
     base.OnModifierMouseWheel(e); 
    } 
} 

回答

1

在SciChart您可以添加任何自定義縮放,並使用ChartModifierBase API盤的行爲。

除了可以覆蓋的標準方法(如OnModifierMouseWheel,OnModifierMouseDown,OnModifierMouseUp),您還可以直接在ParentSurface上訂閱事件。

看看這篇知識庫文章:Custom ChartModifiers - Part 2 - Custom ZoomPanModifier and Zooming on KeyPress

最新accompanying source code is here

所以我的建議是採取SimpleZoomInOutModifier並修改它來響應鼠標滾輪事件而不是關鍵事件。

這有幫助嗎?

+0

感謝您的快速和有益的迴應!這似乎是一個很好的解決方案,但是我發現我的根本問題是水平鼠標滾動事件沒有在應用程序的任何地方註冊......我只需要做更多的研究。如果我找到答案,將更新此帖子。 –

+0

嗨保羅,在上面的示例中,我將我們分享到未在應用程序中訂閱的keydown事件中。您可以對水平鼠標滾輪使用相同的技術。最好的問候,安德魯 –

+0

我指的是這篇KB文章中的SimpleZoomInOutModifier。 http://support.scichart.com/index.php?/Knowledgebase/Article/View/17236/32/custom-chartmodifiers---part-2---custom-zoompanmodifier-and-zooming-on-keypress請注意我們在父窗口上訂閱關鍵事件。你可以用水平鼠標滾輪來做同樣的事情。 –