此项目源码下载地址:https://github.com/lizhiqiang0204/WpfLineChartV1.1

效果图如下:

此项目把折线图制作成了一个控件,在主界面设置好参数直接调用即可,下面是主程序片段

  1. public MainWindow()
  2. {
  3. InitializeComponent();
  4. userControl1_Para.xGrap = ;//设置X轴相邻采集点的间隔
  5. userControl1_Para.xGrapLable = ;//设置X轴时间标签的间隔
  6. userControl1_Para.xGrapLablePoint = userControl1_Para.xGrapLable/ userControl1_Para.xGrap;//相邻两个时间标签内有多少个采集点
  7. userControl1_Para.xWidth = userControl.Width - ;
  8. userControl1_Para.yGrap = -;
  9. userControl1_Para.yStartValue = ;
  10. userControl1_Para.yGrapLable = ;
  11. userControl1_Para.yLables = ((int)userControl.Height - ) / userControl1_Para.yGrapLable;
  12. userControl.myCanvasInit(userControl1_Para);
  13.  
  14. }
  15. private void timer_Tick(object sender, EventArgs e)
  16. {
  17. y = y + 0.1;
  18.  
  19. //随机生成Y坐标
  20. //collectPoint.point = new Point(i, (new Random()).Next(0, 100));
  21. collectPoint.point = new Point(x, Math.Sin(y)*+);
  22. collectPoint.curTime = DateTime.Now;
  23. userControl.AddPoint1(collectPoint);
  24. }

类库添加点的函数

  1. public void AddPoint1(CollectPoint collectPoint)
  2. {
  3. x = x + userControl1_Para.xGrap;
  4. collectPoint.point.X = x;
  5.  
  6. //移动背景不移动点
  7. double xMove = collectPoint.point.X * (-) + userControl1_Para.xWidth;
  8. _myPolyline.Points.Add(collectPoint.point);//添加新的数据点
  9. _myCanvas.Margin = new Thickness(xMove, , , );//设置外边距实现移动,放大缩小
  10.  
  11. //移动X轴标签背景
  12. TextBlock xText = new TextBlock();
  13. xText.Visibility = Visibility.Hidden;
  14. xText.SetValue(Grid.RowProperty, ); //设置按钮所在Grid控件的行
  15. xGrid.Children.Add(xText);//为每个点添加对应的时间值
  16. xText.Text = collectPoint.curTime.ToString("HH:mm:ss");
  17. xText.Margin = new Thickness(collectPoint.point.X, , , );
  18. collectPoints.Add((new CollectPoint() { point = collectPoint.point, curTime = collectPoint.curTime }));
  19. xLableCanvas.Margin = new Thickness(xMove, , , );//设置外边距实现移动,放大缩小
  20.  
  21. if (xMove % userControl1_Para.xGrapLable == )
  22. xText.Visibility = Visibility.Visible;
  23.  
  24. if (collectPoint.point.X > userControl1_Para.xWidth)
  25. {
  26. _myPolyline.Points.RemoveAt();
  27. collectPoints.RemoveAt();
  28. xGrid.Children.RemoveAt();
  29. }
  30. }

本人也是新手,代码规范写的不是很好,见谅!

WPF动态折线图的更多相关文章

  1. achartengine画出动态折线图

    achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目 ...

  2. 模拟Windows任务管理器CPU使用率的动态折线图-农夫山泉

    Delphi的TCanvas类可以实现各种复杂的图形输出功能,基于近期项目的需求,利用它实现了一个很炫的动态折线图(模拟了资源管理器中CPU使用率的折线图),可以直观地展现出数值的实时变化情况. 这段 ...

  3. 原生JS实现动态折线图

    原生JS实现动态折线图 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  4. 开发成功-cpu-mem监控动态折线图--dom esayui js java

    jsp ------------------------------------------------------------------------------------------- ---- ...

  5. Echarts 动态折线图

    <script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>< ...

  6. WPF、Silverlight项目中使用柱状图、饼状图、折线图

    在开发的过程中,可能会遇到柱状图.饼状图.折线图来更好的显示数据,最近整理了一下,遂放出来望需要的朋友可以参考.本文仅仅是简单显示,如需复杂显示效果请参考官网代码示例.----本文代码使用WPF,Si ...

  7. PHP实现动态生成饼状图、柱状图和折线图(转载)

    PHP在图像操作方面的表现非常出色,我们只需借助可以免费得到的GD库便可以轻松实现图.表勾画.下面将分别介绍PHP实现的饼状图.折线图和柱状图以 及他们的使用方法,这几段代码的特点就是不需要再把它们复 ...

  8. ECharts使用—折线图动态加载

    最近需求中用到折线图,单线条,多线交错,之前是散点图,用的是另一个 amcharts.js,这个文档也能找的到,回归早本次重点:ECharts 一.首先引入echarts.common.min.js文 ...

  9. ECharts动态获取后台传过来的json数据进行多个折线图的显示,折线的数据由后台传过来

    ECharts 多个折线图动态获取json数据 效果图如下: 一.html部分 <p id="TwoLineChart" style="width:100%; he ...

随机推荐

  1. 相同的雪花 Hash

    相同的雪花 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 You may have heard that no two snowflakes are alike. ...

  2. applicationcontext理解使用

    Spring ApplicationContext 容器 Application Context 是 spring 中较高级的容器.和 BeanFactory 类似,它可以加载配置文件中定义的 bea ...

  3. boost::shared_ptr

    boost::shared_ptr是boost库中用来管理指针的模板,使用它需要#include <boost/shared_ptr.hpp>.本文介绍它的一些基本用法. 第一,boost ...

  4. 任务调度分配题两道 POJ 1973 POJ 1180(斜率优化复习)

    POJ 1973 这道题以前做过的.今儿重做一次.由于每个程序员要么做A,要么做B,可以联想到0/1背包(谢谢N巨).这样,可以设状态 dp[i][j]为i个程序员做j个A项目同时,最多可做多少个B项 ...

  5. Apache Traffic Server 5.3.1公布

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:www.infoq.com/cn/news/2015/07/traffic-server-5.3.1-release 近日,Apache软件基金会 ...

  6. 深入浅出web服务

    对于没有做过web开发的人来说,web开发涉及到的名词似乎特别多,apache.nginx,cgi,php,http,cookie.session.这一大坨东西究竟是什么,这里我们就从网络的层面去理清 ...

  7. iOS - 社会化分享-微信分享,朋友圈分享

    我仅仅做了文字和图片分享功能 1. TARGETS - Info - URL Types identifier -> weixin URL Schemes ->  应用id 2.在AppD ...

  8. 浅析android适配器adapter中的那些坑

    做项目中遇到的,折磨了我将近两天,今天把经验分享出来.让大家以后少走点弯路,好了.简单来说一下什么是android的适配器,怎样定义.怎样添加适配器的重用性.怎样去减少程序的耦合性 适配器顾名思义是用 ...

  9. C# Interactive Walkthrough

    C# Interactive Walkthrough

  10. 【转】iPhone获取状态栏和导航栏尺寸(宽度和高度)

    原文网址:http://blog.csdn.net/chadeltu/article/details/42708605 iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件 ...