У меня есть 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);
}
}