一、目的:绘制简单轻量级的曲线视图

二、实现:

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绘制曲线视图相关推荐

  1. WPF绘制光滑连续贝塞尔曲线

    原文:WPF绘制光滑连续贝塞尔曲线 1.需求 WPF本身没有直接把点集合绘制成曲线的函数.可以通过贝塞尔曲线函数来绘制. 贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控 ...

  2. SwiftUI之深入解析如何绘制徽章视图的路径和形状

    一.创建徽章视图 创建徽章前需要使用 SwiftUI 的矢量绘画 API 创建一个徽章视图: 选择文件 -> 新建 -> 文件,然后从 iOS 文件模板列表中选择 SwiftUI View ...

  3. WPF绘制简单常用的Path

    原文:WPF绘制简单常用的Path 写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比 ...

  4. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方法, ...

  5. android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. 使用threeJS根据点的坐标绘制曲线

    使用threeJs来绘制曲线 首先可以看threeJS官网的的曲线示例,链接:CatmullRomCurve3 //Create a closed wavey loop var curve = new ...

  7. SolidWorks的通过函数驱动绘制曲线

    直接进入主题,我们来试着用函数驱动来绘制曲线,然后拼接一个空间曲线,通过扫描来画一个蛋盆. 一.了解函数驱动绘制曲线 当进入草图模式后,我们通过单击右键,在右键菜单中选择草图实体(Sketch Ent ...

  8. c#样条曲线命令_C# chart控件绘制曲线

    标签: 在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using ...

  9. Matlab读取txt文本并且绘制曲线

    在利用SOR方法来求解迭代次数和w之间的关系的时候,发现迭代次数随着w的变化而变化,于是想通过一个二维图来将这种变化关系表现出来.在matlab中File->Inport Data 选中我们要导 ...

最新文章

  1. 这个机器狗引起网友争议,「持枪机器狗」射程达1200米
  2. 想学Python?那这套教程再适合不过了!
  3. 【晒出你的第83行代码】踌躇满志的三位高中生,以敬畏之心踏上了代码征程...
  4. fullfile函数作用
  5. Springboot测试类的编写
  6. Node --- Promise中的多异步协作
  7. 6工程文件夹作用_data_dragon数据工程小工具收集
  8. 超级玛丽2014怀旧版发布
  9. python高阶函数map_简单了解python高阶函数map/reduce
  10. try,catch,finally
  11. 调试错误解决方案之VC++
  12. java Socket编程
  13. 最高单价计算机函数公式,通达信公式主动性买盘均价,通达信分时图中 分时均价线黄线的源码怎么写...
  14. android 照片同步到iphone,简明教程教你同步安卓设备照片到iCloud照片流
  15. CSS边框图片border-image属性
  16. 在Android上启用Kiosk模式
  17. java isreachable_java-奇数InetAddress.isReachable()问题
  18. Linux下切换capslock和control键
  19. DirectX11-鼠标拾取
  20. 优化了的过关键点的光滑曲线拟合算法

热门文章

  1. Notepad++ 的XML格式化功能
  2. 给自己的QQ群开启腾讯官方的群聊机器人
  3. iPhone 手机内存,
  4. 2023世界超高清视频产业发展大会博冠8K明星展品介绍
  5. 美图秀秀——将证件照变成标准的二寸证件照
  6. 拉勾网招聘数据的探索性数据分析③
  7. 【智能车辆工程】专业课笔记:汽车理论
  8. php源码解密微盾,php源码加密 仿微盾PHP加密专家(PHPCodeLock)_PHP教程
  9. git master回退到某个版本
  10. 多学科优化MDO(任鸿频小结)