博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
chartContrl 折线图添加报警线和一些其他设置 放大缩小折线图等
阅读量:4694 次
发布时间:2019-06-09

本文共 9002 字,大约阅读时间需要 30 分钟。

//设置鼠标划过折线点时不显示图例 chartControl1.CrosshairEnabled = DefaultBoolean.False;async void SetDataDeepChart(List
list) { try { #region 按采集时间分组用于创建折线 //按测点名深度降序排列,第一条为Y轴最大值 //var orderList = list.OrderByDescending(o => o.Name.Split('-')[1]).ToList(); string name = list[0].Name; string chartName = name.Length == 4 ? name.Substring(0, 2) : name.Substring(0, 3); var newList = from fx in list where !string.IsNullOrEmpty(fx.Name) group fx by fx.Time.Date into b select new { b.Key, Data = b }; #endregion #region 添加折线图 foreach (var item in newList.OrderBy(o=>o.Key)) { Series series = new Series { Name = chartName + @"-" + item.Key.ToString("yyyy.MM.dd"), ValueScaleType = ScaleType.Numerical, ArgumentScaleType = ScaleType.Numerical }; LineSeriesView lineSeriesView1 = new LineSeriesView { MarkerVisibility = DefaultBoolean.True }; series.View = lineSeriesView1; //new LineSeriesView(); //设置鼠标悬停后提示框显示格式 {S}-名称 {A}-X轴值 {V}-Y轴值 series.CrosshairLabelPattern = "{S}:{A}:{V}"; Series series1 = new Series { Name = chartName + @"-" + item.Key.ToString("yyyy.MM.dd"), ValueScaleType = ScaleType.Numerical, ArgumentScaleType = ScaleType.Numerical }; LineSeriesView lineSeriesView2 = new LineSeriesView { MarkerVisibility = DefaultBoolean.True }; series1.View = lineSeriesView2; // new LineSeriesView(); //设置鼠标悬停后提示框显示格式 {S}-名称 {A}-X轴值 {V}-Y轴值 series1.CrosshairLabelPattern = "{S}:{A}:{V}"; var newDtos = list.Where(o => o.Time.Date == item.Key).ToList(); foreach (var dto in newDtos.OrderBy(o=>o.Name)) { //时间位移 series.Points.Add(new SeriesPoint(_controls.FirstOrDefault(o => o.Name == dto.Name)?.Depth,dto.ChangeSum)); //series.Points.Add(new SeriesPoint(dto.ChangeSum, _controls.FirstOrDefault(o=>o.Name==dto.Name)?.Depth)); //时间变化速率 //series1.Points.Add(new SeriesPoint(dto.ChangeV, _controls.FirstOrDefault(o => o.Name == dto.Name)?.Depth)); series1.Points.Add(new SeriesPoint(_controls.FirstOrDefault(o => o.Name == dto.Name)?.Depth, dto.ChangeV)); } chartControl1.Series.Add(series); chartControl2.Series.Add(series1); } #endregion #region 根据类型和等级获取控制值,累积变化量,变化速率 ControlGetAllDto getAllDto = new ControlGetAllDto { ProjectKey = _project.ProjectID.ToString() }; //List
dtos = await controlService.GetControlAll(getAllDto); //ControlDto firstDto = dtos.FirstOrDefault(o => o.TypeName == _typeName && o.Level == _level); //if (firstDto == null) // return; #endregion #region 添加报警值和控制值的警报线 var xyDiagram1 = (XYDiagram)chartControl1.Diagram; //设置鼠标滚轮时折线图随着发生变大或缩小 xyDiagram1.EnableAxisXScrolling = true; xyDiagram1.EnableAxisXZooming = true;   //设置X轴显示年月日时分秒 xyDiagram1.AxisX.DateTimeScaleOptions.MeasureUnit= DateTimeMeasureUnit.Second; xyDiagram1.AxisX.Label.TextPattern= "{A:yyyy-MM-dd HH:mm:ss}"; 
xyDiagram1.AxisX.MinorCount = 1;//刻度间隔个数为1                xyDiagram1.AxisX.NumericScaleOptions.AutoGrid = false;                xyDiagram1.AxisX.NumericScaleOptions.GridSpacing = 1D;//间隔为1                xyDiagram1.AxisX.VisibleInPanesSerializable = "-1";                xyDiagram1.AxisX.WholeRange.Auto = false;                xyDiagram1.AxisX.WholeRange.AutoSideMargins = false;                //string maxValue = list[0].Name.Split('-')[1];                //if (_project.Name == "3#院办公大楼")                //{                //    xyDiagram1.AxisX.WholeRange.MaxValueSerializable = "14";                //}                //xyDiagram1.AxisX.WholeRange.MinValueSerializable = "0";                xyDiagram1.AxisX.WholeRange.SideMarginsValue = 0D;//边界值,最大值=最大值+边界值                xyDiagram1.AxisX.Reverse = true;//Y轴坐标值反转显示,即最上面是0,越往下值越大                xyDiagram1.Rotated = true;//X轴和Y轴互换即竖向画折线                //ConstantLine constantLine1 = new ConstantLine                //{                //    AxisValueSerializable =_controls.FirstOrDefault(o=>o.Name==name).ChangeSum.ToString(),// firstDto.ChangeSum.ToString(),                //    Color = Color.Yellow,                //    Name = "Constant Line 1",                //    ShowInLegend = false                //};                //constantLine1.Title.Text = _typeName = @"报警值(" + _controls.FirstOrDefault(o => o.Name == name).ChangeSum + @")";                //constantLine1.Title.Alignment = ConstantLineTitleAlignment.Far;                //constantLine1.Title.TextColor = Color.Red;                ConstantLine constantLine2 = new ConstantLine                {                    AxisValueSerializable = _controls.FirstOrDefault(o => o.Name == name).Value.ToString(),//firstDto.Value.ToString(),                    Color = Color.Red,                    Name = "Constant Line 2",                    ShowInLegend = false                };                // firstDto.Value                constantLine2.Title.Text = _typeName = @"控制值(" + _controls.FirstOrDefault(o => o.Name == name).Value + @")";                constantLine2.Title.Alignment = ConstantLineTitleAlignment.Far;                constantLine2.Title.TextColor = Color.Red;                xyDiagram1.AxisX.Title.Text = @"深度(m)";                xyDiagram1.AxisX.Title.Visibility = DefaultBoolean.True;                xyDiagram1.AxisY.Title.Text = @"位移(mm)";                xyDiagram1.AxisY.Title.Visibility = DefaultBoolean.True;                xyDiagram1.AxisY.ConstantLines.AddRange(new[]                {                     constantLine2                });                #endregion                #region 添加变化速率的警报线                var xyDiagram2 = (XYDiagram)chartControl2.Diagram;                xyDiagram2.AxisX.MinorCount = 1;//刻度间隔个数为1                xyDiagram2.AxisX.NumericScaleOptions.AutoGrid = false;                xyDiagram2.AxisX.NumericScaleOptions.GridSpacing = 1D;//间隔为1                xyDiagram2.AxisX.VisibleInPanesSerializable = "-1";                xyDiagram2.AxisX.WholeRange.Auto = false;                xyDiagram2.AxisX.WholeRange.AutoSideMargins = false;                //if (_project.Name == "3#院办公大楼")                //{                //    xyDiagram2.AxisX.WholeRange.MaxValueSerializable = "14";                //}                //xyDiagram2.AxisX.WholeRange.MinValueSerializable = "0";                xyDiagram2.AxisX.WholeRange.SideMarginsValue = 0D;//边界值,最大值=最大值+边界值                xyDiagram2.AxisX.Reverse = true;//Y轴坐标值反转显示,即最上面是0,越往下值越大                xyDiagram2.Rotated = true;//X轴和Y轴互换即竖向画折线                xyDiagram2.AxisX.Title.Text = @"深度(m)";                xyDiagram2.AxisX.Title.Visibility = DefaultBoolean.True;                xyDiagram2.AxisY.Title.Text = @"变化率(mm/d)";                xyDiagram2.AxisY.Title.Visibility = DefaultBoolean.True;                ConstantLine constantLine3 = new ConstantLine                {                    AxisValueSerializable = _controls.FirstOrDefault(o => o.Name == name).ChangeV.ToString(),//firstDto.ChangeV.ToString(),                    Color = Color.Red,                    Name = "Constant Line 3",                    ShowInLegend = false                };                constantLine3.Title.Text = @"变化速率(" + _controls.FirstOrDefault(o => o.Name == name).ChangeV + @")";                constantLine3.Title.Alignment = ConstantLineTitleAlignment.Far;                constantLine3.Title.TextColor = Color.Red;                xyDiagram2.AxisY.ConstantLines.AddRange(new[]                {                    constantLine3                });                #endregion            }            catch (Exception ex)            {                FileLogUtility.Error(ex);            }        }

 

转载于:https://www.cnblogs.com/ljy0905/p/6898695.html

你可能感兴趣的文章
游戏机生产厂家世界OL敏枪如何玩 敏枪玩法攻略
查看>>
瀑布流
查看>>
s.t.
查看>>
2016年10月30日--JavaScript语法
查看>>
MiCode 40: 找小“3”
查看>>
四则运算1.0版本
查看>>
我喜欢的必应词典每日一句(持续更新中……)
查看>>
第六章 面向对象的程序设计
查看>>
leetcode - Longest Consecutive Sequence
查看>>
20165214 2018-2019-2 《网络对抗技术》Exp5 MSF基础应用 Week8
查看>>
常用JS大全
查看>>
JAVA-多线程
查看>>
常用加密算法
查看>>
MYSQL培训准备(2):MYSQL自增长陷阱
查看>>
IDEA 创建普通的maven+java Project
查看>>
背包专题练习
查看>>
Python学习笔记(二)
查看>>
T-SQL: Create folders in remote server by sql statement
查看>>
linux SVN安装及配置教程
查看>>
poj1088 滑雪问题 dfs写法
查看>>