首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#在ZedGraph的XAxis上绘制系统时间?

如何使用C#在ZedGraph的XAxis上绘制系统时间?
EN

Stack Overflow用户
提问于 2013-10-26 15:56:37
回答 1查看 3.1K关注 0票数 2

我搜索了一些ZedGraph的例子,但我不能执行我想要的。我每隔20毫秒绘制一次实时数据,我想在x轴上显示系统时间(使用ZedGraph类XAxis)。但是,当我尝试在x轴上绘制毫秒时,我看不到任何数据。下面是我的代码:

代码语言:javascript
复制
//X-Axis Settings
pane.XAxis.Scale.MinorStep = 1;
pane.XAxis.Scale.MajorStep = 5;
pane.XAxis.Type = AxisType.Date;
pane.XAxis.Scale.Format = "HH:mm:ss.fff";
pane.XAxis.Scale.Min = new XDate(DateTime.Now);
pane.XAxis.Scale.Max = new XDate(DateTime.Now.AddSeconds(10));
pane.XAxis.Scale.MinorUnit = DateUnit.Second;
pane.XAxis.Scale.MajorUnit = DateUnit.Second;

XDate time = new XDate(DateTime.Now.ToOADate());
for (int i = 1; i < 16; i++)
{
    listAuido.Add(time, (double)Read_Data1[i]);
}

Scale xScale1 = zgcMasterPane.MasterPane.PaneList[0].XAxis.Scale;
if (time.XLDate > xScale1.Max)
{
   xScale1.Max = (XDate)(DateTime.Now.AddSeconds(1));
   xScale1.Min = (XDate)(DateTime.Now.AddSeconds(-20));
}

编辑:这个代码结构解决了我的问题。

EN

回答 1

Stack Overflow用户

发布于 2013-12-12 12:33:12

下面的代码在同一个x点上绘制所有数据!

代码语言:javascript
复制
for (int i = 1; i < 16; i++)
{
    listAuido.Add((XDate)(DateTime.Now.Millisecond), (double)Read_Data1[i]);
}

如果您不希望XAxis显示为日期格式,为什么要将其设置为日期格式?

好的,试试这个:

代码语言:javascript
复制
//Declare the x coordinate (time) variable
double xValue = 0;

//Setting the axis
pane.XAxis.Scale.MinorStep = 1;
pane.XAxis.Scale.MajorStep = 5;
pane.XAxis.Scale.Max = 0;
pane.XAxis.Scale.Min = -10;

//drawing the data
private void draw(double dataValue)
{
    LineItem curve1 = zedGraphControl1.GraphPane.CurveList[0] as LineItem;
    IPointListEdit list1 = curve1.Points as IPointListEdit;

    list1.Add(xValue*(20/1000), dataValue); //

    //Scroll
    Scale XScale = zedGraphControl1.GraphPane.XAxis.Scale as Scale;
    XScale.Max = xValue*(20/1000);
    XScale.Min = XScale.Max - 10;

    xValue++;
    zedGraphControl1.AxisChange();
    zedGraphControl1.Invalidate();
}

//Now you call the function draw every 20 ms using a [Timer][1] for example
private void timer1_Tick(object sender, EventArgs e)
{
    draw(data[xValue]);
}

顺便说一下,我在这里没有使用MasterPane。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19604362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档