菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
310
0

OxyPlot的动态曲线图表

原创
05/13 14:22
阅读数 42111

前台

  <oxy:PlotView Model="{Binding DynamicCurve}" /> 

 Model中

public PlotModel DynamicCurve{ get; set; }

public void PlotViewModel()
        {
            DynamicCurve = new PlotModel();
            //定义x轴
            OxyPlot.Axes.LinearAxis bottomAxis = new OxyPlot.Axes.LinearAxis()
            {
                Position = AxisPosition.Bottom,
                //IsAxisVisible = false,//X轴不显示
                //Title = "X轴",//显示标题内容
                //TitlePosition = 1,//显示标题位置
                //TitleColor = OxyColor.Parse("#d3d3d3"),//显示标题位置
                IsZoomEnabled = false,//坐标轴缩放关闭
                IsPanEnabled = false,//图表缩放功能关闭
                MajorGridlineStyle = LineStyle.Solid,
                MinorGridlineStyle = LineStyle.Dot,
            };
            //定义y轴
            OxyPlot.Axes.LinearAxis leftAxis = new OxyPlot.Axes.LinearAxis()
            {
                Position = AxisPosition.Left,
                Minimum = -5,
                Maximum = 5,
                //Title = "Y轴",//显示标题内容
                //TitlePosition = 1,//显示标题位置
                //TitleColor = OxyColor.Parse("#d3d3d3"),//显示标题位置
                IsZoomEnabled = false,//坐标轴缩放关闭
                IsPanEnabled = false,//图表缩放功能关闭

                MajorGridlineStyle = LineStyle.Solid,
                MinorGridlineStyle = LineStyle.Dot,
            };
           

            DynamicCurve.Axes.Add(bottomAxis);
            DynamicCurve.Axes.Add(leftAxis);

            var rd = new Random();
            ////添加曲线
            var series = new LineSeries()
            {
                Color = OxyColors.Green,
                StrokeThickness = 2,
                MarkerSize = 3,
                MarkerStroke = OxyColors.DarkGreen,
                MarkerType = MarkerType.Diamond,
                Title = "Temp"

            };
            DynamicCurve.Series.Add(series);
            int i = 0;
            Task.Factory.StartNew(() =>
            {
                while (true)
                { 
                    DynamicCurve.Axes[0].Maximum = 5+i;
                    series.Points.Add(new DataPoint(i, rand.Next(-5, 5)));
                    if (series.Points.Count > 100)
                    {
                        series.Points.RemoveAt(0);
                    }

                    DynamicCurve.InvalidatePlot(true);

                    Thread.Sleep(1000);
                    i++;
                }
            });


        }

发表评论

0/200
310 点赞
0 评论
收藏