WPF——OXY绘图
- private PlotModel _plotModel;
- public PlotModel plotModel
- {
- get { return _plotModel; }
- set
- {
- _plotModel = value;
- RaisePropertyChanged("plotModel");
- }
- }
- public void LoadChart()
- {
- BeginDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
- Stopwatch sw = new Stopwatch();
- sw.Start();
- var resData = JsonConvert.DeserializeObject<List<ResultModel>>(WcfConnector.GetInstance().QuerySroodRawData(QueryEqpId, RouteSelected.RunId, SvidSelected.ParaName));
- var orderList = resData.OrderByDescending(m => m.val);
- var maxPoint = orderList.FirstOrDefault();
- var minPoint = orderList.LastOrDefault();
- var mean = 107.5;
- plotModel = new PlotModel()
- {
- Title = "数据统计",
- LegendTitle = "Max:红色,Min:黄色",
- LegendOrientation = LegendOrientation.Horizontal,
- LegendPlacement = LegendPlacement.Inside,
- LegendPosition = LegendPosition.TopRight,
- LegendBackground = OxyColor.FromAColor(, OxyColors.Beige),
- LegendBorder = OxyColors.Black,
- DefaultFont = "微软雅黑",
- };
- #region X,Y轴
- //X轴
- var _dateAxis = new DateTimeAxis()
- {
- MajorGridlineStyle = LineStyle.Solid,
- MinorGridlineStyle = LineStyle.Dot,
- IntervalLength = ,
- IsZoomEnabled = false,
- IsPanEnabled = false,
- StringFormat = "M/d HH:mm:ss",
- Title = "时间"
- };
- plotModel.Axes.Add(_dateAxis);
- //var startDate = DateTime.Now.AddDays(-10);
- //var endDate = DateTime.Now;
- //var minValue = DateTimeAxis.ToDouble(startDate);
- //var maxValue = DateTimeAxis.ToDouble(endDate);
- //Y轴
- var _valueAxis = new LinearAxis()
- {
- Title = "数值",
- Maximum = maxPoint.val + maxPoint.val / ,
- Minimum = minPoint.val - minPoint.val / ,
- MajorGridlineStyle = LineStyle.Solid,//主刻度设置格网
- MinorGridlineStyle = LineStyle.Dot,//子刻度设置格网样式
- IntervalLength = ,
- Angle = ,
- IsZoomEnabled = true,//坐标轴缩放
- IsPanEnabled = true,//图表缩放功能
- Position = AxisPosition.Left,
- };
- plotModel.Axes.Add(_valueAxis);
- #endregion
- #region 线条
- //动态线条
- var lineSerial = new LineSeries()
- {
- Title = SvidSelected.ParaName,//eqpParam name
- Color = OxyColors.Black,
- Smooth = true,
- MarkerType = MarkerType.Circle,
- StrokeThickness = ,
- MarkerSize = ,
- MarkerStroke = OxyColors.BlueViolet,
- };
- plotModel.Series.Add(lineSerial);
- Task.Factory.StartNew(() =>
- {
- for (int i = ; i < resData.Count; i++)
- {
- lineSerial.Points.Add(DateTimeAxis.CreateDataPoint(resData[i].occurenceTime, resData[i].val));
- plotModel.InvalidatePlot(true); //每秒刷新一次视图
- Thread.Sleep();
- }
- });
- //plotModel.InvalidatePlot(false);
- #endregion
- #region 上下限
- //添加标注线
- var lineMaxAnnotation = new LineAnnotation()
- {//上限
- Type = LineAnnotationType.Horizontal,
- Y = maxPoint.val,
- Text = "上限:" + maxPoint.val,
- Color = OxyColors.Red,
- LineStyle = LineStyle.DashDashDot,
- StrokeThickness =
- };
- plotModel.Annotations.Add(lineMaxAnnotation);
- var lineMinAnnotation = new LineAnnotation()
- {//下限
- Type = LineAnnotationType.Horizontal,
- Color = OxyColors.Blue,
- LineStyle = LineStyle.Dash,
- StrokeThickness = ,
- Y = minPoint.val,
- Text = "下限:" + minPoint.val
- };
- plotModel.Annotations.Add(lineMinAnnotation);
- var lineMean = new LineAnnotation()
- {//平均
- Type = LineAnnotationType.Horizontal,
- Color = OxyColors.Green,
- LineStyle = LineStyle.LongDash,
- StrokeThickness = ,
- Y = mean,
- Text = "平均:" + mean
- };
- plotModel.Annotations.Add(lineMean);
- #endregion
- #region 最大值,最小值
- var min = new ScatterSeries();
- var MaxDataPoint = DateTimeAxis.CreateDataPoint(maxPoint.occurenceTime, maxPoint.val);
- min.Points.Add(new ScatterPoint(MaxDataPoint.X, MaxDataPoint.Y, ));
- min.MarkerFill = OxyColor.FromAColor(, OxyColors.Red);
- min.MarkerType = MarkerType.Circle;
- plotModel.Series.Add(min);
- var max = new ScatterSeries();
- var minDataPoint = DateTimeAxis.CreateDataPoint(minPoint.occurenceTime, minPoint.val);
- max.Points.Add(new ScatterPoint(minDataPoint.X, minDataPoint.Y, ));
- max.MarkerFill = OxyColor.FromAColor(, OxyColors.Yellow);
- max.MarkerType = MarkerType.Circle;
- plotModel.Series.Add(max);
- #endregion
- #region 线条2
- ////动态线条
- //var lineSerial3 = new LineSeries()
- //{
- // Title = "CF3",
- // Color = OxyColors.Blue,
- // Smooth = true,
- // MarkerType = MarkerType.Circle,
- // StrokeThickness = 2,
- // MarkerSize = 3,
- // MarkerStroke = OxyColors.BlueViolet
- //};
- //plotModel.Series.Add(lineSerial3);
- //var count = 50;
- //var rd3 = new Random();
- //Task.Factory.StartNew(() =>
- //{
- // var list = new List<DataPoint>();
- // while (count > 0)
- // {
- // var point = DateTimeAxis.CreateDataPoint(DateTime.Now, rd3.Next(15, 60));
- // list.Add(point);
- // lineSerial3.Points.Add(point);
- // //if (lineSerial3.Points.Count > 1000)
- // //{
- // // lineSerial3.Points.RemoveAt(0);
- // //}
- // plotModel.InvalidatePlot(true); //每秒刷新一次视图
- // Thread.Sleep(500);
- // count--;
- // }
- // if (list.Count > 0)
- // {
- // var list1 = list.OrderByDescending(m => m.Y);
- // var maxPoint = list1.FirstOrDefault();
- // var minPoint = list1.LastOrDefault();
- // var min = new ScatterSeries();
- // min.Points.Add(new ScatterPoint(maxPoint.X, maxPoint.Y, 15));
- // min.MarkerFill = OxyColor.FromAColor(120, OxyColors.Red);
- // min.MarkerType = MarkerType.Circle;
- // plotModel.Series.Add(min);
- // var max = new ScatterSeries();
- // max.Points.Add(new ScatterPoint(minPoint.X, minPoint.Y, 15));
- // max.MarkerFill = OxyColor.FromAColor(120, OxyColors.Yellow);
- // max.MarkerType = MarkerType.Circle;
- // plotModel.Series.Add(max);
- // }
- //});
- #endregion
- EndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
- sw.Stop();
- TotalDate = sw.ElapsedTicks / (decimal)Stopwatch.Frequency;
- }
WPF——OXY绘图的更多相关文章
- WPF——OXY绘图_old
plotModel = new PlotModel() { Title = "数据统计", LegendTitle = "Max:红色,Min:黄色", Leg ...
- WPF 在绘图控件(Shape)中添加文字 [2018.7.15]
原文:WPF 在绘图控件(Shape)中添加文字 [2018.7.15] Q:使用Shape的子类Ellipse画一个圆,如何在圆中添加文字? A:Shape类中不包含Text属性.可使用Shape类 ...
- WPF特效-绘图
原文:WPF特效-绘图 WPF玩起来还是挺炫酷的.我实现的效果:不同色块交叉,交叉部分颜色叠加显示.(叠加部分暂时用随机颜色代替).单独色块点击弹出以色块颜色为主的附 ...
- WPF 实时绘图的逻辑
实时绘图实际上是两个线程.外部线程直接用thread,只有到绘图那个逻辑才用绘图控件的mycanvas2.Dispatcher.Invoke. 或者说,INVOKE并不是开线程,只是一个绘图的委托而已 ...
- WPF中绘图(含调用GDI+)
private void DrawStuff() { // //if (buffer == null) //{ // buffer = new RenderTargetBitmap((int)Back ...
- WPF学习(11)2D绘图
本篇我们来学习WPF的绘图,在2D绘图中主要有这么几个重要的类:Drawing.Visual和Shape,顺便讲下Brush和BitmapEffect. 1 2D绘图 1.1Drawing类 Draw ...
- 《Programming WPF》翻译 第7章 1.图形基础
原文:<Programming WPF>翻译 第7章 1.图形基础 WPF使得在你的应用程序中使用图形很容易,以及更容易开发你的显卡的能力.这有很多图形构架的方面来达到这个目标.其中最重要 ...
- WPF绘制深度不同颜色的3D模型填充图和线框图
原文:WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理.通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致. 重建的3D模型需 ...
- WPF特效-绘制实时2D激光雷达图
原文:WPF特效-绘制实时2D激光雷达图 接前两篇: https://blog.csdn.net/u013224722/article/details/80738619 https://blog.cs ...
随机推荐
- N(C)O(S)I(P)P 2019 退役记
N(C)O(S)I(P)P 2019 退役记 day-4 今天下午老师突然咕了,于是一下午欢乐时光 今天上午考试T3线段树维护个区间加,区间乘 一遍过编译,一遍过样例(第一次,俺比较弱(虽然也发现和暴 ...
- easyui datagrid Column Group 列组、 复杂表头 嵌套表头 组合表头 (转载)
核心: rowspan:2 //占两行 colspan:3 //占三列 所有的colspan下的二级列表头,统一放在一个数组里. 文章一: 转载来源:https://blog.csdn.ne ...
- 【漏洞复现】Apache Solr via Velocity template远程代码执行
0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...
- 服务器架构前面加了防火墙,Nginx如何获取客户端真实ip???
在大部分实际业务场景中,网站访问请求并不是简单地从用户(访问者)的浏览器直达网站的源站服务器,中间可能经过所部署的CDN.高防IP.WAF等代理服务器.例如,网站可能采用这样的部署架构:用户 > ...
- Java httpclent请求httpclentUtils工具类
第一种写法: import java.io.IOException; import java.io.InterruptedIOException; import java.io.Unsupported ...
- Fedora 29 安装 GitBook 教程
Fedora 29 安装 GitBook 教程 本文原始地址:https://sitoi.cn/posts/53731.html 安装 nvm 安装 nvm curl -o- https://raw. ...
- Unexpected EOF in archive 或者 rmtlseek not stopped at a record boundary
多半都是文件在传输.复制的时候,发生了损坏: 尽量cp不要用mv 其次,注意文件的大小:
- PAT 乙级 1040.有几个PAT C++/Java
题目来源 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位( ...
- 关于background-image设置背景图片
每天进步一小步,一年进步一大步. 本篇主要介绍背景图片设置,平铺,x y方向上的平铺,是否重复显示no repeat 显示的初始位置 background-image:url(images/inde ...
- Css背景设置 、
每天进步一小步,一年进步一大步. 第一次发博客园文章,主要记录自己学习的一个过程. CSS3 背景 CSS3 包含多个新的背景属性,它们提供了对背景更强大的控制. background-size ba ...