C#绘制磁盘容量扇形图

C#获取磁盘的容量并绘制出对应的扇形图

原理很简单:

  1.获取磁盘驱动器

  2.判断驱动器类型、以及驱动器是否就绪

  3.获得磁盘的容量、并根据容量算出扇形的角度

  4.开始画图

 

 

效果图

C#绘制磁盘容量扇形图

代码

代码
using System;
using System.Drawing;
using System.IO;
using System.Management;
using System.Windows.Forms;

namespace 磁盘容量扇形图
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}

private void FrmMain_Load( object sender, EventArgs e)
{
// 使用WQL查询获取本地磁盘驱动器
SelectQuery selectQuery = new SelectQuery( " select * from win32_LogicalDisk " );
ManagementObjectSearcher searcher
= new ManagementObjectSearcher(selectQuery);
foreach (ManagementObject obj in searcher.Get())
{
cboDisk.Items.Add(obj[
" Name " ].ToString());
}
cboDisk.SelectedIndex
= 0 ;

// 使用 DriveInfo 类获取本地磁盘驱动器
// foreach (DriveInfo drive in DriveInfo.GetDrives())
// {
// cboDisk.Items.Add(drive.Name);
// }
// cboDisk.SelectedIndex = 0;

// 使用 Environment 类获取本地磁盘驱动器
// foreach (string drive in Environment.GetLogicalDrives())
// {
// cboDisk.Items.Add(drive);
// }
// cboDisk.SelectedIndex = 0;
}

// 按钮的点击事件
private void btnOk_Click( object sender, EventArgs e)
{
DriveInfo info
= new DriveInfo(cboDisk.Text);
Graphics g
= this .CreateGraphics();
g.Clear(Color.White);
// 判断磁盘驱动器的类型是否未知
if (info.DriveType == DriveType.Unknown)
{
lblMessage.Text
= info.DriveType.ToString();
}
else
{
// 如果驱动器已经就绪、则准备进行图形绘制
if (info.IsReady)
{
float maxSize = info.TotalSize / ( 1024 * 1024 ); // 获取磁盘总容量、单位M
float freeSize = info.TotalFreeSpace / ( 1024 * 1024 ); // 获取磁盘剩余容量、单位M
float usedAngle = Convert.ToSingle( 360 * freeSize / maxSize); // 已用磁盘容量的角度数
float freeAngle = Convert.ToSingle( 360 * (maxSize - freeSize) / maxSize); // 剩余磁盘容量的角度数
// 准备两把不同颜色的刷子
Brush freeBrush = new SolidBrush(Color.Lime); // 剩余磁盘容量用的刷子
Brush usedBrush = new SolidBrush(Color.Blue); // 已用磁盘容量用的刷子
g.FillPie(freeBrush, 205 , 9 , 290 , 290 , 0 , freeAngle);
g.FillPie(usedBrush,
205 , 9 , 290 , 290 , freeAngle, usedAngle);
// 释放资源
freeBrush.Dispose();
usedBrush.Dispose();
g.Dispose();
// 在标签上显示磁盘的相关信息
lblMessage.Text = " 驱动器盘符: " + cboDisk.Text
+ " \n\n\n驱动器卷标: " + info.VolumeLabel
+ " \n\n\n文件系统: " + info.DriveFormat
+ " \n\n\n磁盘总容量: " + (maxSize)
+ " M\n\n\n磁盘使用量: " + (maxSize - freeSize)
+ " M\n\n\n磁盘剩余量: " + freeSize + " M " ;
}
else
{
lblMessage.Text
= " 驱动器盘符: " + cboDisk.Text
+ " \n\n\n驱动器类型: " + info.DriveType + " \n\n\n该驱动器未就绪 " ;
}
}
}
}
}

 

你可能感兴趣的:(C#)