Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 滚动不适用于ZedGraph_C#_Zedgraph - Fatal编程技术网

C# 滚动不适用于ZedGraph

C# 滚动不适用于ZedGraph,c#,zedgraph,C#,Zedgraph,我在ZedGraph中有一个折线图。 数据每秒都来自串行端口。 图表正在运行。 但不要在X轴上滚动(滚动),并在左角被压缩。 我需要图表从右向左滚动,日期和时间显示在X轴上 #region 2 mm zed2mm GraphPane myPane02m=zed2mm.GraphPane; myPane02m.Fill.Color=System.Drawing.Color.GhostWhite; myPane02m.Titl

我在ZedGraph中有一个折线图。 数据每秒都来自串行端口。 图表正在运行。 但不要在X轴上滚动(滚动),并在左角被压缩。 我需要图表从右向左滚动,日期和时间显示在X轴上

 #region 2 mm zed2mm
            GraphPane myPane02m=zed2mm.GraphPane;
            myPane02m.Fill.Color=System.Drawing.Color.GhostWhite;
            myPane02m.Title.Text="Particle Counter: 2μm";
            myPane02m.YAxis.Title.Text="Particles";

            // X AXIS SETTINGS

            myPane02m.XAxis.Title.Text="Date & Time";
            myPane02m.XAxis.Scale.FontSpec.Family="Arial, Narrow";
            myPane02m.XAxis.Scale.FontSpec.Size=14;
            myPane02m.XAxis.Scale.FontSpec.IsBold = false;
            myPane02m.XAxis.MajorGrid.IsVisible = true;
            myPane02m.YAxis.MajorGrid.IsVisible = true;
            myPane02m.XAxis.MajorGrid.DashOff = 15;
            myPane02m.YAxis.MajorGrid.DashOff = 15;
            myPane02m.XAxis.Scale.IsPreventLabelOverlap = false;
            myPane02m.XAxis.Type=AxisType.Date;
            myPane02m.XAxis.Scale.Format = "HH:mm:ss\nyy/MM/dd";

            myPane02m.XAxis.Scale.Min = new XDate(DateTime.Now);       // We want to use time from now
            myPane02m.XAxis.Scale.Max = new XDate(DateTime.Now.AddMinutes(5));        // to 5 min per default
            myPane02m.XAxis.Scale.MinorUnit = DateUnit.Second;         // set the minimum x unit to time/seconds
            myPane02m.XAxis.Scale.MajorUnit = DateUnit.Minute;         // set the maximum x unit to time/minutes

            myPane02m.XAxis.Scale.MinorStep = 1;
            myPane02m.XAxis.Scale.MajorStep = 50;

            myPane02m.XAxis.MinorTic.IsAllTics = true;
            myPane02m.XAxis.MajorTic.IsOpposite = true;
            myPane02m.XAxis.Scale.IsSkipCrossLabel = false;

            //myPane02m.XAxis.Scale.MinGrace = 0;
            //myPane02m.XAxis.Scale.MaxGrace = 0;

            //myPane02m.XAxis.Scale.MinorUnit = DateUnit.Second;
            //myPane02m.XAxis.Scale.MajorUnit = DateUnit.Minute;

            //myPane02m.XAxis.Scale.Min = DateTime.Now.AddSeconds(-60).ToOADate();
            //myPane02m.XAxis.Scale.Max = DateTime.Now.ToOADate();


            // Save 6000 points. At 50 ms sample rate, this is one minute
            // The RollingPointPairList is an efficient storage class that always
            // keeps a rolling set of point data without needing to shift any data values
            RollingPointPairList lista02m_1=new RollingPointPairList(6000);
            RollingPointPairList lista02m_2=new RollingPointPairList(6000);
            RollingPointPairList lista02m_3=new RollingPointPairList(6000);
            RollingPointPairList lista02m_4=new RollingPointPairList(6000);
            RollingPointPairList lista02m_5=new RollingPointPairList(6000);
            RollingPointPairList lista02m_6=new RollingPointPairList(6000);

            // Initially, a curve is added with no data points (list is empty)
            // Color is blue, and there will be no symbols
            LineItem curve02m_1=myPane02m.AddCurve("ID 01",lista02m_1,Color.Red,SymbolType.Circle);
            curve02m_1.Line.IsSmooth=true;
            curve02m_1.Line.SmoothTension=0.3F;

            LineItem curve02m_2=myPane02m.AddCurve("ID_02",lista02m_2,Color.Blue,SymbolType.Diamond);
            curve02m_2.Line.IsSmooth=true;
            curve02m_2.Line.SmoothTension=0.3F;

            LineItem curve02m_3=myPane02m.AddCurve("ID_03",lista02m_3,Color.Black,SymbolType.Plus);
            curve02m_3.Line.IsSmooth=true;
            curve02m_3.Line.SmoothTension=0.3F;

            LineItem curve02m_4=myPane02m.AddCurve("ID_04",lista02m_4,Color.BurlyWood,SymbolType.Star);
            curve02m_4.Line.IsSmooth=true;
            curve02m_4.Line.SmoothTension=0.3F;

            LineItem curve02m_5=myPane02m.AddCurve("ID_05",lista02m_5,Color.Chartreuse,SymbolType.TriangleDown);
            curve02m_5.Line.IsSmooth=true;
            curve02m_5.Line.SmoothTension=0.3F;

            LineItem curve02m_6=myPane02m.AddCurve("ID_06",lista02m_6,Color.Coral,SymbolType.Square);
            curve02m_6.Line.IsSmooth=true;
            curve02m_6.Line.SmoothTension=0.3F;
            // Sample at 50ms intervals

            // Scale the axes
            zed2mm.AxisChange();

            // Redraw the axes
            zed2mm.Invalidate();

            // Save the beginning time for reference
            TickStart=Environment.TickCount;
            #endregion
试一试

有关更多信息,请参阅和

编辑:
对于自动滚动,当新数据输入时(或计时器超时),您必须手动滚动:


谢谢,这对我有帮助。然而,我需要的图形是从右向左移动,就像在这个视频中一样。你必须将添加的代码放入“timer1_Tick”函数中,而不是构造函数中。因为每次,当新数据进来时,你必须更新最小值和最大值1。5分钟后轻松停止计时器。2.您必须创建一个csv文件,检查日期并将其填入csv文件的列中。导致跳转的原因是,zedgraph每次都会自动重置basetic。不久前我也遇到过同样的问题,但我不知道解决办法了。。。我认为这与此有关,我必须更改zedgraph的源代码以实现此行为。查看源代码通常是一个好主意,这样您就可以更好地理解zedgraph在做什么。关于您的excel问题:评论不是提出全新问题的地方。提出一个新问题,更多的人会注意到它。
zed2mm.IsShowHScrollBar = true;
zed2mm.IsAutoScrollRange = true;
double xRange = myPane02m.XAxis.Scale.Max - myPane02m.XAxis.Scale.Min;
myPane02m.XAxis.Scale.Max = new XDate(DateTime.Now);
myPane02m.XAxis.Scale.Min = myPane02m.XAxis.Scale.Max - xRange;