我在我的 C# WPF 应用程序中使用了一个简单的 ChartPlotter。当我通过鼠标滚动放大/缩小时,两个轴都发生了变化。如何通过鼠标滚动控制缩放,使其仅影响 X 轴?
问问题
1349 次
2 回答
1
此功能已内置在 D3 中,如果您将鼠标悬停在其中一个轴上并进行鼠标滚轮滚动,则缩放仅与您悬停在的轴有关。如果你想在你的代码中复制它,你可以在源代码中看到它的例子。
于 2013-01-14T14:07:28.800 回答
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;
}
}
于 2016-06-07T04:26:45.737 回答