C#绘制磁盘容量扇形图

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

原理很简单:

  1.获取磁盘驱动器

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

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

  4.开始画图

效果图

代码

代码
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该驱动器未就绪";
}
}
}
}
}
原文地址:https://www.cnblogs.com/Robbery/p/1859904.html