0

前段时间我发布了关于同步图表的问题。我在这里找到了解决方案,但我仍然有一些问题。

  • 我需要放大和缩小 StrokeChart 上的 Y 轴来查看我的日期。我不知道为什么,但是范围在下一个添加点上没有改变。实际上,Y 轴上的范围是 0-1。这很奇怪,但我可以忍受
  • 第二个问题是:如何配置图表区域的缩放?我希望它在向上/向下滚动时仅缩放 Y 轴。
  • 最后但同样重要的是:如何在使用 ObservableCollection 构建的图表上制作实时工具提示?它可以很容易地为 EnumerableDataSource 完成。你可以检查这个这个。我试图做用户“世纪”描述的事情,但它不起作用。我什AddMapping至向 ObservableCollection 添加了方法并重建了库,但它仍然不起作用。所以我不知道下一步该怎么做。

我感谢任何帮助和建议。谢谢

4

1 回答 1

0

关于缩放,我想我设法解决了这个问题。

MouseNavigation.cs添加新属性

// 2014-02-22 - MPEKALSKI - added property to make possible
                         limiting on zoom on only one axis
private bool? _zoomX;
/// <summary>
/// Property for allowing/disallowing for zoom along X axis. By default allowed (true).
/// </summary>
public bool zoomX
{
    get { return _zoomX ?? true; }
    set { _zoomX = value; }
}
private bool? _zoomY;
/// <summary>
/// Property for allowing/disallowing for zoom along Y axis. By default allowed (true).
/// </summary>
public bool zoomY
{
    get { return _zoomY ?? true; }
    set { _zoomY = value; }
}     

在同一个类中修改方法

private void MouseWheelZoom(Point mousePos, int wheelRotationDelta)

通过替换

Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed);

    // 2014-02-23 - MPEKALSKI - if we do not allow for change in Y
    //                          then keep the old value, by analogy for X
    Rect zoomedRect = Viewport.Visible.Zoom(zoomTo, zoomSpeed);
    if (zoomY == false) { zoomedRect.Y = Viewport.Visible.Y; 
                          zoomedRect.Height = Viewport.Visible.Height; }
    if (zoomX == false) { zoomedRect.X = Viewport.Visible.X;
                          zoomedRect.Width = Viewport.Visible.Width; }
    Viewport.Visible = zoomedRect;

现在使用非常简单,因为 chartPlotter 对象只需将属性 zoomY 或 zoomX 设置为 false 以防止沿此轴缩放。

chartPlotter2.MouseNavigation.zoomY = false;

我不知道它是否是最佳解决方案,但它对我有用。

于 2014-02-22T23:33:40.023 回答