封装: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 ...
随机推荐
- 三、requests模块
Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “ ...
- Go Programming Language 2
[Go Programming Language 2] 1.In Go, the sign of the remainder is always the same as the sign of the ...
- sql字符转义
/** * sql 内的like % 代表一个或多个字符, _代表一个字符,这都是需要转义的 * @param s * @return */ public static String escapeSp ...
- 使用apache.tika判断文件类型
一. 判断文件类型一般可采用两种方式 1. 后缀名判断 简单易操作,但无法准确判断类型 2. 文件头信息判断 通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一 ...
- scikit-leanr 库中的 make_blobs() 函数
sklearn.datasets.make_blobs() 是用于创建多类单标签数据集的函数,它为每个类分配一个或多个正态分布的点集. sklearn.datasets.make_blobs( n_s ...
- Android架构师吐槽腾讯王者荣耀的程序员,排位匹配算法怎么搞的,每次都输
腾讯王者荣耀的开发来来来出来聊聊,真是日了狗了,多次离上王者还差两三颗星的时候队友就开始水的一塌糊涂,对面就牛逼的不行. 又连跪回去了,被对面把屎都打出来了,实在忍不住来吐槽,你们这个排位匹配算法到底 ...
- wordpress迁移后登陆时出现Forbidden You don’t have permission to access /wp-login.php on this server
之前在vps上,最近迁移到了php虚拟主机上,迁移后发现无法登陆后台出现403:Forbidden You don’t have permission to access /wp-login.php ...
- VS操作中遇到的问题及解决
1.无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用 2. /ZI ...
- 15-C#笔记-结构体
示例: using System; using System.Text; struct Books { private string title; // 支持 public private strin ...
- Navicat Premium永久激活方式
今天安装完Navicat Premium,运行时出现只能用14天的信息,所以就比较生气,只能用14天,那我还下你干啥,所以就查教程,弄了个破解工具,最后大功告成,应该是可以永久使用了,具体的教程看下 ...