【问题标题】:OxyPlot Change Interval On Zoom Level缩放级别上的 OxyPlot 更改间隔
【发布时间】:2018-05-25 02:54:50
【问题描述】:

我试图让我的情节根据缩放级别改变它的间隔类型,但我不确定如何实现这一点。我正在使用 DateTimeAxis 并希望它从 Days 开始。然后缩小会从几天变为几个月,最后变为几年。放大会从几天变为几小时,如果这种行为是可能的,可能是几秒钟。

目前我的轴设置如下:

public DateTimeAxis HorizontalAxis
    {
        get
        {
            return new DateTimeAxis
            {
                Position = AxisPosition.Bottom,
                Minimum = DateTimeAxis.ToDouble(Start),
                Maximum = DateTimeAxis.ToDouble(End),
                MajorStep = double.NaN,
                MinimumMajorStep = 0,
                MinorStep = double.NaN,
                MinimumMinorStep = 0,
                AbsoluteMinimum = DateTimeAxis.ToDouble(Start),
                AbsoluteMaximum = DateTimeAxis.ToDouble(End),
                MinorIntervalType = DateTimeIntervalType.Hours,
                IntervalType = DateTimeIntervalType.Days,
                Title = " Date Time Axis Title "
            };
        }
    }

public LinearAxis VerticalAxis
    {
        get
        {
            return new LinearAxis
            {
                Position = AxisPosition.Left,
                Minimum = SetPoint - 4,
                Maximum = SetPoint + 4,
                MajorStep = double.NaN,
                MinimumMajorStep = 0,
                MinorStep = 0.5,
                MinimumMinorStep = 0,
                AbsoluteMinimum = SetPoint - 4,
                AbsoluteMaximum = SetPoint + 4,
                MinorTickSize = 0,
                Title = " Linear Axis Title "
            };
        }
    }

如果这种行为是不可能的,我还会问是否有办法在从几天放大时显示小时数。在制作默认绘图时,这是我看到的行为。

谢谢!

【问题讨论】:

    标签: c# oxyplot


    【解决方案1】:

    我知道我刚刚发布了这个问题,但也许还有其他人对这种行为感兴趣。

    为了动态更改轴,我使用了 Here 中描述的 AxisChanged 事件

    从那里我创建了一条输出消息,以查看轴中的哪些属性发生了变化。我发现ScaleMinor Step SizeMajor Step Size 是缩放时的变化。实现一个简单的 if 语句来检查我能够得到我想要的行为的规模。

        private async void Horizontal_AxisChanged(object sender, AxisChangedEventArgs e)
        {
            DateTimeAxis horizontal = sender as DateTimeAxis;
    
            if(horizontal.Scale > 100)
            {
                horizontal.IntervalType = DateTimeIntervalType.Hours;
            }
    
            else if(horizontal.Scale < 100)
            {
                horizontal.IntervalType = DateTimeIntervalType.Days;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2011-10-26
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      相关资源
      最近更新 更多