您的位置:首页 > 其它

问题: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;
}

运行的效果图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: