问题:MSChart.exe;结果:微软图表控件MsChart使用方法及各种插件下载地址
2015-08-28 17:54
761 查看
微软图表控件MsChart使用方法及各种插件下载地址
<asp:Chart ID="ChartMemory" runat="server" BackColor="LightSteelBlue"BackGradientStyle="TopBottom" BackSecondaryColor="White" EnableTheming="False"
EnableViewState="True"
Height="363px" Width="415px">
<Legends>
<asp:Legend Alignment="Center" Docking="Bottom" Name="Legend1" Title="图例">
</asp:Legend>
</Legends>
<Titles>
<asp:Title Font="微软雅黑,
16pt" Name="Title1" Text="系统内存监控图表">
</asp:Title>
</Titles>
<Series>
<asp:Series BorderColor="White" BorderWidth="3" ChartArea="ChartArea1"
ChartType="Spline"
Legend="Legend1" Name="已使用物理内存" XValueType="Double"
YValueType="Double">
</asp:Series>
<asp:Series BorderWidth="3" ChartArea="ChartArea1" ChartType="Spline"
Legend="Legend1"
Name="全部占用内存">
</asp:Series>
<asp:Series ChartArea="ChartArea2" ChartType="StackedArea" Legend="Legend1"
Name="CPU">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea BackColor="224, 224, 224" BackGradientStyle="LeftRight"
Name="ChartArea1">
</asp:ChartArea>
<asp:ChartArea Name="ChartArea2">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
一共建立了两个绘图区,一个用于呈现内存使用情况的在ChartArea1区域,另一个则是呈现Cpu使用情况的,放置在ChartArea2区域了。一共有三个图表,分别表示已使用的物理内存、全部占用的物理内存,以及Cpu使用显示的情况。
添加一个Ajax的计时器以及Ajax的ScriptManager,UpdatePanel,把计时器和图表控件都拖进UpdatePanel里面。设置计时器的间隔时间为一秒钟(1000),双击计时器,写如下代码:
static PerformanceCounter pc = new
PerformanceCounter("Processor",
"%
Processor Time",
"_Total");
protected void Timer1_Tick(object sender,
EventArgs e)
{
MEMORY_INFO MemInfo =
new MEMORY_INFO();
ComputerInfo.GlobalMemoryStatus(ref MemInfo);
//UseMemory
Series
series = ChartMemory.Series[0];
int xCount = series.Points.Count == 0
? 0 :
series.Points.Count -
1;
double lastXValue = series.Points.Count == 0
? 1 :
series.Points[xCount].XValue + 1;
double lastYValue = (double)(MemInfo.dwTotalPhys-MemInfo.dwAvailPhys)/1024/1024;
series.Points.AddXY(lastXValue,
lastYValue);
//Total
Memory
series = ChartMemory.Series[1];
lastYValue =
(double)(MemInfo.dwTotalVirtual+MemInfo.dwTotalPhys-MemInfo.dwAvailPhys - MemInfo.dwAvailVirtual)/1024/1024;
series.Points.AddXY(lastXValue, lastYValue);
//CPU
series = ChartMemory.Series[2];
lastYValue =
(double)pc.NextValue();
series.Points.AddXY(lastXValue, lastYValue);
// Remove points from the left chart side if number
of points exceeds 100.
while (this.ChartMemory.Series[0].Points.Count > 80)
{
// Remove series points
foreach (Series s in this.ChartMemory.Series)
{
s.Points.RemoveAt(0);
}
}
// Adjust categorical scale
double axisMinimum = this.ChartMemory.Series[0].Points[0].XValue;
this.ChartMemory.ChartAreas[0].AxisX.Minimum = axisMinimum;
this.ChartMemory.ChartAreas[0].AxisX.Maximum = axisMinimum + 99;
}
附上取得内存信息的类代码:
/// <summary>
///取得计算机的系统信息
/// </summary>
public class ComputerInfo
{
/// <summary>
/// 取得Windows的目录
/// </summary>
/// <param
name="WinDir"></param>
/// <param
name="count"></param>
[DllImport("kernel32")]
public static extern void GetWindowsDirectory(StringBuilder WinDir,
int count);
/// <summary>
/// 获取系统路径
/// </summary>
/// <param
name="SysDir"></param>
/// <param
name="count"></param>
[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir,
int count);
/// <summary>
/// 取得CPU信息
/// </summary>
/// <param
name="cpuinfo"></param>
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref CPU_INFO
cpuinfo);
///
<summary>
/// 取得内存状态
/// </summary>
/// <param
name="meminfo"></param>
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
/// <summary>
/// 取得系统时间
/// </summary>
/// <param
name="stinfo"></param>
[DllImport("kernel32")]
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
public
ComputerInfo()
{
}
}
//定义CPU的信息结构
[StructLayout(LayoutKind.Sequential)]
public
struct CPU_INFO
{
public
uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public
uint lpMaximumApplicationAddress;
public
uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
}
//定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public
struct MEMORY_INFO
{
public
uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;public uint dwAvailVirtual;
}//定义系统时间的信息结构 [StructLayout(LayoutKind.Sequential)]public
struct SYSTEMTIME_INFO
{public
ushort wYear;public ushort wMonth;public ushort wDayOfWeek;public ushort wDay;public ushort wHour;public ushort wMinute;public ushort wSecond;public ushort wMilliseconds;
}
运行的效果图如下:
相关文章推荐
- 数据库(获取包含某字段的所有表名)
- BA-防冻开关的安装
- 自己动手写控件(模仿mvc htmlhelper的类)
- Hadoop学习笔记Day01
- 融云聚合会话报错的解决配置
- Android 动态类加载实现免安装更新
- 十六制颜色转换为RGB方法
- 一种基于流水线的视频文件校验方法
- java.io.IOException: open failed: EINVAL (Invalid argument)
- 【SDOI2008】【BZOJ2190】仪仗队
- LeetCode(235) Lowest Common Ancestor of a Binary Search Tree
- 微信支付--异步处理支付结果
- 关于类、方法、变量、语句块的加载顺序
- 有序的map LinkedHashMap
- ios 开发不同应用间相互跳转
- 修改安装过程中的文字显示
- Leetcode 223 Rectangle Area 矩形区域面积
- 【Android Training - Multimedia】管理音频播放[Lesson 2 - 管理音频焦点Audio Focus]
- xml之dom解析
- iOS 设置模拟器经纬度