[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法

本文主要是介绍[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【创建圆形进度条流程】


在C# WinForms应用程序中创建一个圆形进度条(通常用作仪表盘的显示)可以通过多种方式实现。下面是一个简单的例子,演示如何使用System.Drawing命名空间中的图形绘制功能来绘制一个基本的圆形进度条。

首先,在你的WinForms项目中添加一个Panel控件作为进度条的容器。然后,可以通过重写Panel的OnPaint事件来处理绘图逻辑。

以下是一个简单的圆形进度条控件的示例代码:

csharp
using System;  
using System.Drawing;  
using System.Windows.Forms;  
  
public class CircularProgressBar : Panel  
{  
    private int _progress;  
  
    public CircularProgressBar()  
    {  
        this.DoubleBuffered = true; // 双缓冲以减少闪烁  
        this.SetStyle(ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer, true);  
    }  
  
    public int Progress  
    {  
        get { return _progress; }  
        set  
        {  
            if (value < 0) value = 0;  
            if (value > 100) value = 100;  
  
            _progress = value;  
            Invalidate(); // 触发重绘  
        }  
    }  
  
    protected override void OnPaint(PaintEventArgs e)  
    {  
        base.OnPaint(e);  
  
        int diameter = Math.Min(Width, Height) - 1; // 直径等于宽度和高度的最小值减一  
        int radius = diameter / 2; // 半径等于直径的一半  
        int centerX = Width / 2; // 圆心X坐标  
        int centerY = Height / 2; // 圆心Y坐标  
  
        // 绘制进度条背景  
        using (Pen backgroundPen = new Pen(Color.LightGray, 10))  
        {  
            e.Graphics.DrawEllipse(backgroundPen, centerX - radius, centerY - radius, diameter, diameter);  
        }  
  
        // 绘制进度  
        int sweepAngle = 360 * Progress / 100; // 计算扫过的角度  
        using (Pen progressPen = new Pen(Color.Blue, 10))  
        {  
            e.Graphics.DrawArc(progressPen, centerX - radius, centerY - radius, diameter, diameter, -90, sweepAngle);  
        }  
  
        // 绘制进度文本(可选)  
        using (Font textFont = new Font("Arial", 12, FontStyle.Bold))  
        using (Brush textBrush = new SolidBrush(Color.Black))  
        {  
            string text = Progress + "%";  
            e.Graphics.DrawString(text, textFont, textBrush, centerX - e.Graphics.MeasureString(text, textFont).Width / 2, centerY - e.Graphics.MeasureString(text, textFont).Height / 2);  
        }  
    }  
}
然后,你可以在你的WinForms窗体上实例化并使用这个CircularProgressBar控件:

csharp
public partial class MainForm : Form  
{  
    private CircularProgressBar circularProgressBar;  
  
    public MainForm()  
    {  
        InitializeComponent();  
  
        circularProgressBar = new CircularProgressBar();  
        circularProgressBar.Dock = DockStyle.Fill;  
        circularProgressBar.Progress = 50; // 设置初始进度为50%  
        this.Controls.Add(circularProgressBar);  
  
        // 你可以通过定时器或其他方式来动态改变进度  
        // 例如:  
        // System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();  
        // timer.Interval = 1000; // 1秒  
        // timer.Tick += (sender, e) => {  
        //     circularProgressBar.Progress = (circularProgressBar.Progress + 1) % 100;  
        // };  
        // timer.Start();  
    }  
}
请注意,这只是一个简单的示例,你可以根据自己的需求调整样式、颜色、字体等属性,甚至添加动画效果。如果你需要更复杂的仪表盘控件,可能需要考虑使用第三方库或自定义绘制更复杂的图形元素。

【圆形进度条控件】

圆形进度条控件制作是是否考验自己编程能力如果有开源免费的圆形进度条就很好了,偶然发现一个好用圆形进度条控件,支持圆形、圆环等指定圆形进度条创建,使用十分简单就跟C#里面trackbar使用方法一样,只是简单调用即可。效果如下:

【测试环境】

vs2019,netframwork4.7.2

【源码演示下载地址】 

https://download.csdn.net/download/FL1623863129/88824751

这篇关于[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700467

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是