繁体   English   中英

DynamicDataDisplay D3:ChartPlotter缩放提示

[英]DynamicDataDisplay D3:ChartPlotter zoom proplem

我在C#WPF应用程序中使用了一个简单的ChartPlotter。 当我通过鼠标滚动放大/缩小时,两个轴都改变了。 如何通过鼠标滚动控制缩放,使其仅影响X轴?

此功能已内置在D3中,如果将鼠标悬停在其中一个轴上并进行鼠标滚轮滚动,则缩放仅与您悬停的轴有关。 如果要在代码中复制它,则可以在源代码中查看它的示例。

缩放功能在“ 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;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM