原文:WPF使用DynamicDataDisplay.dll显示CPU及内存使用曲线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangshubo1989/article/details/46875243

DynamicDataDisplay.dll是一个添加动态数据到您的Silverlight或WPF应用程序交互的可视化控件。它允许创建线图,气泡图,热图和其他复杂的二维图,这是非常常见的科学软件。

DynamicDataDisplay sample charts:

下载地址如下:

http://dynamicdatadisplay.codeplex.com/

首先创建一个WPF工程,在引用上右键选择“添加引用”,找到下载好的DynamicDataDisplay.dll;

其次在.cs文件中加入引用集:

using Microsoft.Research.DynamicDataDisplay;
using Microsoft.Research.DynamicDataDisplay.DataSources;

private ObservableDataSource dataSource = new ObservableDataSource(); // 动态存储图表坐标点
private PerformanceCounter cpuPerformance = new PerformanceCounter(); //表示Windows NT的性能组件
private DispatcherTimer timer = new DispatcherTimer();//创建一个定时器

定义一个函数用于获取CPU和内存的数据:

private void AnimatedPlot(object sender, EventArgs e) 

cpuPerformance.CategoryName = "Processor"; 

cpuPerformance.CounterName = "% Processor Time"; 

cpuPerformance.InstanceName = "_Total"; 

double
x = i; 

//调试的时候,无法调用NextValue()函数,需要把y赋一个固定的值 

double y = cpuPerformance.NextValue(); 

if (maxCpu < y) 

maxCpu = y; 

//double y = 12; 

double MemoryUse = Process.GetCurrentProcess().PrivateMemorySize64 / 1024.0 / 1024.0;
//获取使用内存

Point point = new Point(x, y); 

dataSource.AppendAsync(base.Dispatcher, point); 

cpuUsageText.Text
= String.Format("{0:0}%", y); //cpuUsageText为TextBlock控件,显示CPU使用率

cpuMaxText.Text = String.Format("{0:0}%", maxCpu);//cpuMaxText为TextBlock控件,显示CPU最大使用率

memoryUsageText.Text = MemoryUse.ToString("F02");//memoryUsageText为TextBlock控件,显示占用内存大小

i++; 

}

注意:在VS调试代码的过程中,NextValue()函数会报错!!需要将y赋值为常数。

接下来就是显示图像了:

public void StartCpuShow() 

plotter.AddLineGraph(dataSource, Colors.Green, 2, "Percentage"); //设置图像中线的相关信息

timer.Interval = TimeSpan.FromSeconds(1); 

timer.Tick += new EventHandler(AnimatedPlot); 

timer.IsEnabled = true; plotter.Viewport.FitToView(); 

}

在xaml文件中添加命名空间:

xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

通过<d3:ChartPlotter> 创建一个图表框架;

在其中添加两条整型坐标轴:

X轴:<d3:HorizontalIntegerAxis>

Y轴:<d3:VerticalIntegerAxis>

<d3:Header> 用来设置图表名称

<d3:VerticalAxisTitle> 用来设置Y轴名称。

<d3:ChartPlotter
x:Name="plotter" Margin="10,10,33,10" Grid.Row="1" Background="Transparent" Foreground="#FF00DBE7"> 

<d3:ChartPlotter.VerticalAxis> 

<d3:VerticalIntegerAxis
Foreground="#FF00DBE7"/>

 
</d3:ChartPlotter.VerticalAxis> 

<d3:ChartPlotter.HorizontalAxis

<d3:HorizontalIntegerAxis
Foreground="#FF00DBE7"/> 

</d3:ChartPlotter.HorizontalAxis> 

<d3:Header
Content="CPU Performance History" Foreground="#FF00DBE7"/> 

</d3:ChartPlotter>

最后需要注意的是,很多系统无法运行该程序。注意是需要重建性能计数器才可以使用查看CPU等功能

重建方法如下:

运行cmd 命令行

输入 lodctr/R 

等待重建性能计数器


最后上效果图:


如有疑问 wangshubo1989@126.com

WPF使用DynamicDataDisplay.dll显示CPU及内存使用曲线的更多相关文章

  1. lunix脚本进程挂掉时显示cpu和内存信息及挂掉的时间

    #!/bin/shwhile [ true ]; do #查询是否有8899正在运行的进程netstat -an|grep 8899if [ $? -ne 0 ]thennowtime=$(date ...

  2. Ubuntu 16.04 标题栏实时显示上下行网速、CPU及内存使用率--indicator-sysmonitor

    ---------------------------------------------------------------------------- 原文地址:http://blog.csdn.N ...

  3. Ubuntu 16.04 标题栏实时显示上下行网速、CPU及内存使用率

    有时感觉网络失去响应,就通过Ubuntu 14.04自带的系统监视器程序来查看当前网速,但是这样很不方便,遂打算让网速显示在标题栏,那样就随时可直观的看到.一番搜索尝试后,成功实现!同时也实现了CPU ...

  4. 用户登陆显示cpu、负载、内存信息

    #用户登陆显示cpu.负载.内存信息 #!/bin/bash # hostip=`ifconfig eth0 |awk -F" +|:" '/Bcast/{print $4}'` ...

  5. iOS开发 - 在状态栏显示FPS,CPU和内存信息

    原理 FPS的计算 CoreAnimation有一个很好用的类CADisplayLink,这个类会在每一帧绘制之前调用,并且可以获取时间戳.于是,我们只要统计出,在1s内的帧数即可. - (void) ...

  6. CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

  7. 转:CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

  8. CPU与内存(经典问答)

    原文:http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如 ...

  9. 【转】CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

随机推荐

  1. 【u122】迎接仪式

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路 ...

  2. Python IDLE如何清屏

    金gordon 原文 IDLE如何清屏 在学习和使用python的过程中,少不了要与Python IDLE打交道.但使用 Python IDLE 都会遇到一个常见而又懊恼的问题——要怎么清屏? 答案是 ...

  3. [Ramda] allPass, propEq

    const needs = ['wifi', 'shower', 'laundry']; const homes = [{ name: 'Home 1', wifi: 'y', shower: 'y' ...

  4. gcc编译选项--转

    gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) ...

  5. Windows Phone 8.1 Tiles, Notifications and Action Center

    (1)Tiles Tiles 也就是磁贴,是 Windows Phone 的一大特色. 一个 Tile 其实可以看成是一个 XML,比如: <tile> <visual> &l ...

  6. vs 2013 常用快捷键及常见问题的解决

    1. 代码编辑 关闭当前文档:ctrl + F4 打开光标所在位置的文档:ctrl + G(shift + g) 返回上次编辑的位置:ctrl + -(键盘数字键 0 后的那个按键) 移动光标所在的行 ...

  7. SQLite单表4亿订单,大数据测试

    [转载] SQLite单表4亿订单,大数据测试 http://www.cnblogs.com/nnhy/p/BigData.html

  8. MKNetworkKit的断点续传SIDownloader下载

    comefrom:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73d6f8b9042238fce098 ...

  9. 物理引擎UIDynamic

    nUIDynamic   n什么是UIDynamic pUIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 p可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ü重力. ...

  10. _Decoder_Interface_init xxxxxx in amrFileCodec.o

    Undefined symbols for architecture arm64: "_Decoder_Interface_init", referenced from: Deco ...