winfrom的progressBar 鼠标移上去显示 进度条的时间

需求描述:

播放IPC摄像头(海康、大华)的录像回放,视频窗口下方有个进度条,能显示当前录像播放的进度,点击进度条能将视频跳转到指定的时间点继续播放... 现在需要再进度条上显示视频的时间,用来提示在哪个进度点去点击鼠标将视频跳转到指定的时间点继续播放


给进度条控件progressBar添加MouseMove事件,事件内代码如下:

cs 复制代码
//鼠标在进度条上移动
private void PlaybackprogressBar_MouseMove(object sender, MouseEventArgs e)
{
    var progressBar = this.PlaybackprogressBar;//滑块控件
    // 计算鼠标位置对应的进度值
    int s = CalculateMouseValue(progressBar, e.X);
    int h = s / (60 * 60);//获得小时部分
    int y = s % (60 * 60);//取出余数
    int m = y / 60;//获得分钟部分

    string hh = h.ToString().PadLeft(2, '0');
    string mm = m.ToString().PadLeft(2, '0');
    string time = hh + ":" + mm;//hh:mm

    // 显示鼠标所在位置的进度值
    this.toolTip1.SetToolTip(progressBar, $"{this.dateTimeStart.Value.ToString("yyyy-MM-dd")} {time}");
}

//计算进度条的值
private int CalculateMouseValue(MaterialSlider progressBar, int mouseX)
{
    int minValue = 0;//最小值,0秒
    int maxValue = 86400;//最大值,一天有:60秒*60分钟*24小时=86400秒  

    // 获取 ProgressBar 的宽度
    int barWidth = progressBar.Width;

    // 计算鼠标位置对应的进度值
    double ratio = (double)mouseX / barWidth;
    int value = (int)(minValue + ratio * (maxValue - minValue));

    // 确保计算的值在 ProgressBar 的有效范围内
    value = Math.Max(minValue, Math.Min(maxValue, value));

    return value;
}

效果如图:

相关推荐
集芯微电科技有限公司13 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
lichong95113 天前
让AI自己用电脑!Cua:后台操作鼠标键盘,Mac/Windows/Linux全支持
人工智能·macos·ai·计算机外设·agent·提示词
Saniffer_SH14 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
阿泽·黑核14 天前
05 keyflow 扩展设计方案:矩阵键盘/组合键/事件队列/中断驱动
线性代数·矩阵·计算机外设·嵌入式·agent·vibe coding
科技每日热闻14 天前
618 AI显示器选购指南!爱攻AGON AI定制芯片电竞显示器AG277UX,适合哪些玩家?
人工智能·科技·游戏·计算机外设
科技每日热闻14 天前
舒视蓝4.0 AI版!EVNIA弈威海王星系列护眼电竞显示器27M4P5501U来袭
人工智能·科技·游戏·计算机外设
开开心心_Every15 天前
界面干净的开源免费电视浏览器
人工智能·科技·智能手机·计算机外设·rabbitmq·语音识别·etcd
智塑未来17 天前
2026高性价比商用护眼显示器调研:飞利浦护眼技术与售后体系深度解析
计算机外设
移远通信17 天前
显示器-调试
单片机·嵌入式硬件·计算机外设
Legendary_00817 天前
LDR6020P:iPad 一体式皮套键盘 OTG 应用的核心引擎
ios·计算机外设·ipad