【问题标题】:DynamicDataDisplay D3:ChartPlotter zoom proplem动态数据显示 D3:ChartPlotter 缩放问题
【发布时间】:2013-01-14 06:17:43
【问题描述】:

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

【问题讨论】:

    标签: c# wpf dynamic-data-display


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-21
      • 2017-02-21
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2019-12-30
      相关资源
      最近更新 更多