zoukankan      html  css  js  c++  java
  • TeeChart的X轴,使用伪装的时间

    TeeChart曲线的X轴是时间,但是频率很高。没法完全显示。

    例如,一秒钟有2000个点,那么点与点的间隔为0.5毫秒。

     使用TChart类的GetAxisLabel事件,

    函数手册上对此事件的解释:

    An Event is triggered for each Axis Label painted. There are two different uses for GetAxisLabel: 
    
    1) : Axis Labels are Values. Is this case, the Series parameter will be nil, and the ValueIndex will be -1. 
    2) : Axis Labels are Series points. The Series parameter will be a valid Series, and the ValueIndex will be the current Series point position. You can change the LabelText referred parameter for drawing a different Axis Label. 
    

     

     private void Init()
    {
    tChart = new TChart();
    line = new Line();
    random = new Random();
    
    tChart.Series.Add(line);
    tChart.Aspect.View3D = false;
    tChart.Dock = DockStyle.Fill;
    tChart.GetAxisLabel += tChart_GetAxisLabel;
    tChart.Axes.Bottom.Labels.Style = AxisLabelStyle.Mark;
    tChart.Axes.Bottom.Labels.Angle = 45;
    line.ShowInLegend = false;
    
    
    }
    void tChart_GetAxisLabel(object sender, GetAxisLabelEventArgs e)
            {
                if (((Steema.TeeChart.Axis)sender).Equals(tChart.Axes.Bottom))
                {
                    double max = tChart.Axes.Bottom.Maximum;
                    double min = tChart.Axes.Bottom.Minimum;
                    double middle = Math.Ceiling((min + max) / 2.0 + min);
                    if (e.ValueIndex == max)
                    {
                        e.LabelText = DateTime.Now.ToString("MM-dd HH:mm:ss");
                    }
                    else if (e.ValueIndex == min)
                    {
                        e.LabelText = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
                    }
                    else if (e.ValueIndex == middle)
                    {
                        e.LabelText = DateTime.Now.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss");
                    }
                    else
                    {
                        e.LabelText = string.Empty;
                    }
                }
            }

    上述代码的问题是:

    在缩放的时候,就没有开始时间,结束时间以及中间的时间了。

    需要考虑在缩放事件中,重新绘制这三个时间,难点在于,计算出当前起始点和结束点所对应的时间。

  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/chucklu/p/4506587.html
Copyright © 2011-2022 走看看