zoukankan      html  css  js  c++  java
  • 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该驱动器未就绪";
    }
    }
    }
    }
    }
  • 相关阅读:
    穷举和迭代
    for循环练习题
    case when then else end 用法
    如何将数据库账号(用户)解锁
    比赛安排
    How to spend you day ?
    异常-问题型
    重载和重写的区别
    new关键字的理解-问题型
    源辰项目-1
  • 原文地址:https://www.cnblogs.com/Robbery/p/1859904.html
Copyright © 2011-2022 走看看