我在C#WPF应用程序中使用了一个简单的ChartPlotter。当我通过鼠标滚动放大/缩小时,两个轴都被更改。如何通过鼠标滚动控制缩放,使其仅影响X轴?
答案 0 :(得分:1)
此功能已内置于D3中,如果将鼠标悬停在其中一个轴上并执行鼠标滚轮滚动,则缩放仅与您悬停的轴有关。如果要在代码中复制它,可以在源代码中看到它的示例。
答案 1 :(得分:0)
缩放功能在“MouseNavigation.cs”中实现。 MouseWheel处理程序将在函数下面调用:
Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed);
幸运的是,ZoomX功能可满足您的需求。 因此,只需从绘图仪中删除MouseNavigation,然后重新实现自己的,如下所示:
// Remove mouse navigation
plotter.Children.Remove(plotter.MouseNavigation);
// ZoomX when wheeling mouse
private void plotter_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
if (!e.Handled)
{
Point mousePos = e.GetPosition(this);
Point zoomTo = mousePos.ScreenToViewport(plotter.Viewport.Transform);
double zoomSpeed = Math.Abs(e.Delta / Mouse.MouseWheelDeltaForOneLine);
zoomSpeed *= 1.2;
if (e.Delta < 0)
{
zoomSpeed = 1 / zoomSpeed;
}
plotter.Viewport.SetChangeType(ChangeType.Zoom);
plotter.Viewport.Visible = plotter.Viewport.Visible.ZoomX(zoomTo, zoomSpeed);
plotter.Viewport.SetChangeType();
e.Handled = true;
}
}