封装:WPF绘制曲线视图
原文:封装: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
封装:WPF绘制曲线视图的更多相关文章
- C# chart控件绘制曲线
在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using Syst ...
- 12-UIKit(View绘制、绘制曲线、绘制文字、贴图)
目录: 1. View绘制 2. 绘制曲线 3. 绘制文字 4. 贴图 回到顶部 1. View绘制 1.1 做出自己的视图对象 TRCell : UITableViewCell : UIView U ...
- C#中利用LightningChart绘制曲线图表
最近在做一个“基于C#语言的电炉温控制软件设计”的设计,我在大学并不是专业学习C#语言编程的,对C#的学习研究完全是处于兴趣,所以编程技术也不是很厉害,遇到问题多参照网络上的开源码. 这不,在做这个课 ...
- MFC--根据串口采集的数据借助GDI绘制曲线
根据采集到的数据绘制曲线 在串口编程中会涉及到这样一个问题,就是将采集到的数据以曲线的形式展示出来,大家自然而然会想到采用方便快捷的控件进行编程.编程周期短,完成任务快,但是真实情况来看,控件会实现很 ...
- WPF绘制深度不同颜色的3D模型填充图和线框图
原文:WPF绘制深度不同颜色的3D模型填充图和线框图 在机械测量过程中,测量的数据需要进行软件处理.通常测量一个零件之后,需要重建零件的3D模型,便于观察测量结果是否与所测工件一致. 重建的3D模型需 ...
- [原译]WPF绘制圆角多边形
原文:[原译]WPF绘制圆角多边形 介绍 最近,我发现我需要个圆角多边形.而且是需要在运行时从用户界面来绘制.WPF有多边形.但是不支持圆角.我搜索了一下.也没找到可行的现成例子.于是就自己做吧.本文 ...
- Canvas学习:封装Canvas绘制基本图形API
Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...
- WPF贝塞尔曲线示例
WPF贝塞尔曲线示例 贝塞尔曲线在之前使用SVG的时候其实就已经有接触到了,但应用未深,了解的不是很多,最近在进行图形操作的时候需要用到贝塞尔曲线,所以又重新来了解WPF中贝塞尔曲线的绘制. 一阶贝塞 ...
- 使用D3绘制图表(2)--绘制曲线
上一篇是使用D3绘制画布,这一篇的内容是在画布上绘制曲线. 1.之前的html代码没有变化,但是我还是贴出来 <!DOCTYPE html> <html> <head&g ...
随机推荐
- 【Spring Boot】Spring Boot之使用AOP实现数据库多数据源自动切换
一.添加maven坐标 <!-- aop --> <dependency> <groupId>org.springframework.boot</groupI ...
- Linux用户环境配置文件
用户操作环境配置文件: 从/etc/skel目录复制过来 .bashrc 打开新终端 /etc/bashrc .bash_profile 用户登 ...
- Mysql数据库之慢查询
一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_ ...
- 【servlet】Servlet快速入门&使用Eclipse发布web项目
创建时间:6.15 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是ja ...
- WTL 9.0的变化 - atlcrack.h
atlcrack.h中是一些对消息映射的简化,9.0版本中只增加了一个WM_MOUSEWHEEL的响应,而且要求windows vista. #if (_WIN32_WINNT >= 0x060 ...
- 20180606模拟赛T4——数学游戏
数学游戏 题目描述: 小T又发脑残了,没错,她又要求奇怪的东西,这次她想知道[X,Y]之间整数有多少可以表示成K个不同的B的幂的和形势.如\(x,y,k,b=15,20,2,2\),则有: \[17= ...
- Python学习笔记7 头文件的添加规则(转载)
转载自:https://www.cnblogs.com/taurusfy/p/7605787.html ************************************************ ...
- Hyperparameters
参数是机器学习算法的关键.它们通常由过去的训练数据中总结得出.在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设. 模型是否具有固定或可变数量的参数决定了它是否可以 ...
- jsonp原理,跨域请求头处理
一.jsonp(解决跨域)思路介绍: 因浏览器的同源策略不会拦截link标签内的src请求,所以利用这一点,我们把后端开放的接口路径放在src内, 其在发送请求后会自动接收返回的东西,所以我们可以给要 ...
- 从零和使用mxnet实现线性回归
1.线性回归从零实现 from mxnet import ndarray as nd import matplotlib.pyplot as plt import numpy as np import ...