封装:WPF绘制曲线视图
一、目的:绘制简单轻量级的曲线视图
二、实现:
1、动画加载曲线
2、点击图例显示隐藏对应曲线
3、绘制标准基准线
4、绘制蒙板显示标准区域
曲线图示例:
心电图示例:
三、实现代码
View:
<echart:StaticCurveChartPlotter x:Name="chart" Background="White" DataSource="{Binding Collection}"FontSize="12" MaxValueY="400" MinValueY="0" MaxValueX="{Binding MaxValue}" MinValueX="{Binding MinValue}" IsLegendVisible="True" Height="200" Width="800"><!--MaxValueX="11" MinValueX="0"--><echart:StaticCurveChartPlotter.SplitItemYs><echart:SplitItem Color="DarkGray" Value="400" Text="400 " ></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="350" Text="350 " ></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="300" Text="300 "></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="250" Text="250"></echart:SplitItem><echart:SplitItem Color="Red" Value="240" Text="240 mmHg" SpliteType="HeighLight"/><echart:SplitItem Color="DarkGray" Value="200" Text="200"></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="150" Text="150"></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="100" Text="100" ></echart:SplitItem><echart:SplitItem Color="Green" Value="90" Text="90 mmHg" SpliteType="HeighLight"></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="50" Text="50 "></echart:SplitItem><echart:SplitItem Color="DarkGray" Value="0" Text="0 "></echart:SplitItem></echart:StaticCurveChartPlotter.SplitItemYs> </echart:StaticCurveChartPlotter>
ViewModel:
/// <summary> 说明 </summary>partial class MainWindowViewModel{private List<ICurveEntitySource> _collection = new List<ICurveEntitySource>();/// <summary> 曲线图数据 </summary>public List<ICurveEntitySource> Collection{get { return _collection; }set{_collection = value;RaisePropertyChanged("Collection");}}void Init(){RefreshCurveData();}public void RefreshCurveData(){List<ICurveEntitySource> collection = new List<ICurveEntitySource>();CurveEntitySource entity = new CurveEntitySource();entity.Text = "长度(km)";entity.Color = Brushes.Red;entity.Marker = new CirclePointMarker();entity.Marker.Fill = Brushes.Red;for (int i = 0; i < 20; i++){PointC point = new PointC();point.X = i;point.Y = i*i;point.Text = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");entity.Source.Add(point);this.MinValue = this.MinValue > point.X ? point.X : this.MinValue;this.MaxValue = this.MaxValue < point.X ? point.X : this.MaxValue;}collection.Add(entity);entity = new CurveEntitySource();entity.Text = "重量(kg)";entity.Color = Brushes.Orange;entity.Marker = new T5PointMarker();entity.Marker.Fill = Brushes.Orange;for (int i = 0; i < 20; i++){PointC point = new PointC();point.X = i;point.Y = (20-i) * (20 - i);point.Text = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");entity.Source.Add(point);this.MinValue = this.MinValue > point.X ? point.X : this.MinValue;this.MaxValue = this.MaxValue < point.X ? point.X : this.MaxValue;}collection.Add(entity);this.Collection = collection;}private double _maxValue = double.MinValue;/// <summary> 说明 </summary>public double MaxValue{get { return _maxValue; }set{_maxValue = value;RaisePropertyChanged("MaxValue");}}private double _minValue = double.MaxValue;/// <summary> 说明 </summary>public double MinValue{get { return _minValue; }set{_minValue = value;RaisePropertyChanged("MinValue");}}}partial class MainWindowViewModel : INotifyPropertyChanged{public MainWindowViewModel(){Init();}#region - MVVM -public event PropertyChangedEventHandler PropertyChanged;public void RaisePropertyChanged([CallerMemberName] string propertyName = ""){if (PropertyChanged != null)this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));}#endregion}
结构设计:
示例图片:
下载地址 :GitHut: https://github.com/HeBianGu/WpfChartProgram.git
另一个Chart2D参考链接:https://blog.csdn.net/u010975589/article/details/109139606
封装:WPF绘制曲线视图相关推荐
- WPF绘制光滑连续贝塞尔曲线
原文:WPF绘制光滑连续贝塞尔曲线 1.需求 WPF本身没有直接把点集合绘制成曲线的函数.可以通过贝塞尔曲线函数来绘制. 贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控 ...
- SwiftUI之深入解析如何绘制徽章视图的路径和形状
一.创建徽章视图 创建徽章前需要使用 SwiftUI 的矢量绘画 API 创建一个徽章视图: 选择文件 -> 新建 -> 文件,然后从 iOS 文件模板列表中选择 SwiftUI View ...
- WPF绘制简单常用的Path
原文:WPF绘制简单常用的Path 写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比 ...
- Canvas学习:封装Canvas绘制基本图形API
Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方法, ...
- android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 使用threeJS根据点的坐标绘制曲线
使用threeJs来绘制曲线 首先可以看threeJS官网的的曲线示例,链接:CatmullRomCurve3 //Create a closed wavey loop var curve = new ...
- SolidWorks的通过函数驱动绘制曲线
直接进入主题,我们来试着用函数驱动来绘制曲线,然后拼接一个空间曲线,通过扫描来画一个蛋盆. 一.了解函数驱动绘制曲线 当进入草图模式后,我们通过单击右键,在右键菜单中选择草图实体(Sketch Ent ...
- c#样条曲线命令_C# chart控件绘制曲线
标签: 在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using ...
- Matlab读取txt文本并且绘制曲线
在利用SOR方法来求解迭代次数和w之间的关系的时候,发现迭代次数随着w的变化而变化,于是想通过一个二维图来将这种变化关系表现出来.在matlab中File->Inport Data 选中我们要导 ...
最新文章
- 这个机器狗引起网友争议,「持枪机器狗」射程达1200米
- 想学Python?那这套教程再适合不过了!
- 【晒出你的第83行代码】踌躇满志的三位高中生,以敬畏之心踏上了代码征程...
- fullfile函数作用
- Springboot测试类的编写
- Node --- Promise中的多异步协作
- 6工程文件夹作用_data_dragon数据工程小工具收集
- 超级玛丽2014怀旧版发布
- python高阶函数map_简单了解python高阶函数map/reduce
- try,catch,finally
- 调试错误解决方案之VC++
- java Socket编程
- 最高单价计算机函数公式,通达信公式主动性买盘均价,通达信分时图中 分时均价线黄线的源码怎么写...
- android 照片同步到iphone,简明教程教你同步安卓设备照片到iCloud照片流
- CSS边框图片border-image属性
- 在Android上启用Kiosk模式
- java isreachable_java-奇数InetAddress.isReachable()问题
- Linux下切换capslock和control键
- DirectX11-鼠标拾取
- 优化了的过关键点的光滑曲线拟合算法