封装: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 ...
随机推荐
- oracle linux 7 yum报错解决:COULD NOT RESOLVE HOST: YUM.ORACLE.COM
虚拟机中yum报错 [root@localhost ~]# yum -y install oracle-rdbms-server-11gR2-preinstall Loaded plugins: la ...
- Linux服务管理之SSH
Linux服务SSH ssh服务: 管理服务器的方式: 本地管理类 (安装系统,故障修复) SHH远程连接方式 ...
- HTTP协议那些事儿
HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的基础. ...
- isaster(Comet OJ - Contest #11D题+kruskal重构树+线段树+倍增)
目录 题目链接 思路 代码 题目链接 传送门 思路 \(kruskal\)重构树\(+\)线段树\(+\)倍增 代码 #include <set> #include <map> ...
- 使用BCP从Sybase远程数据库中导出数据
1.在本机安装Sybase ASE 15,我装的开发版全套,懒得去仔细看需要哪个了 2.在Sybase安装目录里找到ini\sql.ini,在里面添加数据源例如: [MYDS] master=NLWN ...
- 实验十四 团队项目评审&个人学习总结
实验十四 课程学习总结 项目 内容 这个作业属于哪个课程 (https://www.cnblogs.com/nwnu-daizh/) 这个作业的要求在哪里 (https://www.cnblogs.c ...
- 《浅谈我眼中的express、koa和koa2》好文留存+笔记
原文 :三英战豪强,思绪走四方.浅谈我眼中的express.koa和koa2 一.回调大坑怎么解决呢? 1.es5可以利用一下第三方库,例如 async 库, 2.或者单纯使用 connect中间件 ...
- Python 模块A
模块的四种形式 自定义模块,例如自己定义的common.py就叫common模块 内置模块:python解释器自带的,不需要安装 第三方模块:需要自己安装,13万个库,无所不能,写库(弄得更简单) 包 ...
- SaaS加速器 III 技术中心:提供SaaS Launchkit,快速定制,一云多端等能力,一云多端将通过小程序云实现
https://yq.aliyun.com/articles/695746 演讲主题:SaaS加速器 III技术中心:聚合开放 高效强大 技术中心定义:阿里云以聚合开放的姿势,提供一个高效强大的技术开 ...
- uniform
float timeValue = glfwGetTime(); float greenValue = (sin(timeValue) / 2.0f) + 0.5f; int vertexColorL ...