当前位置: 首页 > article >正文

C# GDI绘制的倒计时控件

C# GDI绘制的倒计时控件

using System;
using System.Drawing;
using System.Windows.Forms;
 
public class CountdownControl : Control
{
    private Timer timer;
    private TimeSpan remainingTime;
 
    public CountdownControl()
    {
        this.timer = new Timer();
        this.timer.Interval = 1000; // 1 second
        this.timer.Tick += Timer_Tick;
        this.remainingTime = TimeSpan.FromMinutes(1); // Default countdown of 1 minute
    }
 
    private void Timer_Tick(object sender, EventArgs e)
    {
        if (remainingTime > TimeSpan.Zero)
        {
            remainingTime = remainingTime.Subtract(TimeSpan.FromSeconds(1));
        }
        else
        {
            timer.Stop();
        }
 
        this.Invalidate(); // Redraw the control
    }
 
    public void StartCountdown(TimeSpan duration)
    {
        remainingTime = duration;
        timer.Start();
    }
 
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Graphics g = e.Graphics;
 
        // Clear the control with the background color
        g.Clear(this.BackColor);
 
        // Draw the countdown
        g.DrawString($"{remainingTime:mm\\:ss}", this.Font, Brushes.Black, new PointF(0, 0));
    }
}
 
// Usage example:
// CountdownControl countdown = new CountdownControl();
// countdown.StartCountdown(TimeSpan.FromMinutes(5)); // Start a 5 minute countdown
// this.Controls.Add(countdown);


http://www.kler.cn/a/428752.html

相关文章:

  • EDI安全:2025年数据保护与隐私威胁应对策略
  • 【0x0052】HCI_Write_Extended_Inquiry_Response命令详解
  • vulnhub靶场【IA系列】之Tornado
  • Java中的构造器
  • 【正则表达式】从0开始学习正则表达式
  • 多级缓存 JVM进程缓存
  • 数组 - 八皇后 - 困难
  • 模拟IC设计中LDO的学习笔记(一)
  • 【C#】NET 9中LINQ的新特性-CountBy
  • 【Pandas】pandas wide_to_long
  • AWS Kinesis Firehose 权限配置完全指南
  • BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示
  • DSA 和 ECDSA 签名算法
  • 调用matlab用户自定义的function函数时,有多个输出变量只输出第一个变量
  • 【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别
  • 面试中遇到的一些有关进程的问题(有争议版)
  • Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
  • STM32标准固件库官网下载方法
  • Spring Boot微服务应用实战:构建高效、可扩展的服务架构
  • 显示设备驱动开发
  • 【力扣】2094.找出3为偶数
  • 【Leetcode 每日一题】3001. 捕获黑皇后需要的最少移动次数
  • 【CSS in Depth 2 精译_066】11.2 颜色的定义(上):实现示例页中的基础样式及初步布局
  • vim实用命令整理(常用的命令)
  • mybatis plus打印sql日志
  • Apache Doris 数据类型