2017-06-29 2 views
1

Ich habe ein SciChartSurface, wo ich das Zoomen unterstützen wie folgt:Wie unterstützt man seitliches Scrollen mit Trackpad/horizontalem Scrollrad?

  • Zoom x-Achse auf den regulären Scrollen.
  • Zoom y-Achse auf Scrolling + CTRL
  • Pan x-Achse auf Scrolling + Shift

I auch in der X-Richtung Panning möchte ermöglichen, wenn der Benutzer entweder scrollt horizontal auf einem Trackpad oder verwendet ein horizontales Scrollrad (Daumenrad). Ich bin mir jedoch nicht sicher, wie ich das machen soll.

Hier ist der erweiterte MouseWheelZoomModifier, den ich verwendet habe. Kann ich ihm irgendwie Informationen über mein Scroll-Verhalten senden? Kann ich irgendwie den seitlichen/horizontalen Bildlauf als Shift + scroll behandeln? Vielen Dank!

/// <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); 
    } 
} 

Antwort

1

In SciChart können Sie beliebige benutzerdefinierte Zoom- und Pan-Verhalten fügen Sie den ChartModifierBase API verwenden.

Neben den Standardmethoden, die überschrieben werden können (wie OnModifierMouseWheel, OnModifierMouseDown, OnModifierMouseUp), können Sie auch Ereignisse direkt auf der ParentSurface abonnieren.

Werfen Sie einen Blick auf diesen KB-Artikel: Custom ChartModifiers - Part 2 - Custom ZoomPanModifier and Zooming on KeyPress.

Aktuell accompanying source code is here.

Also mein Vorschlag ist die SimpleZoomInOutModifier nehmen und ändern, um auf Mausrad Ereignisse statt Schlüsselereignisse reagieren.

Hilft das?

+0

Vielen Dank für die schnelle und hilfreiche Antwort! Das scheint eine gute Lösung zu sein, aber ich habe festgestellt, dass mein Problem darin besteht, dass das horizontale Maus-Scroll-Ereignis nirgendwo in der Anwendung registriert wird ... Ich muss nur noch etwas recherchieren. Wird diesen Beitrag aktualisieren, wenn ich eine Antwort finde. –

+0

Hallo Paul, in der oben genannten Probe teilte ich uns in Keydown Veranstaltungen, die nicht in der Anwendung abonniert sind. Sie können die gleiche Technik für das horizontale Mausrad verwenden. Mit freundlichen Grüßen, Andrew –

+0

Ich beziehe mich auf den SimpleZoomInOutModifier in diesem KB-Artikel. http://support.scichart.com/index.php?/Knowledgebase/Article/View/17236/32/custom-chartmodifiers---part-2---custom-zoompanmodifier-and-zooming-on-keypress Beachten Sie, wie Wir abonnieren Schlüsselereignisse im übergeordneten Fenster. Sie können das gleiche mit horizontalem Mausrad tun –

Verwandte Themen