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 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
豪气的程序猿13 小时前
Windows 练字时空格键偶尔没反应?先排查焦点和键盘,再用键盘小鹿练习
计算机外设·电脑
晚风叙码1 天前
Linux 进程概念(上):从冯诺依曼到进程调度
linux·运维·计算机外设
科技每日热闻2 天前
爱攻AGON亮相2026核聚变游戏嘉年华北京站,创新科技点燃高能电竞热潮!
科技·计算机外设
沃普天科技3 天前
100W 氮化镓充电器充电头扩展坞一体化设计,实用性翻倍
驱动开发·计算机外设·音视频·硬件工程·pcb工艺
小生凡一3 天前
AI 是怎么学会用鼠标的?Computer Use工作原理
人工智能·计算机外设
走自己的路-雷龙3 天前
体积显示器是什么?从成像原理到四类应用场景
计算机外设
最好一梦6 天前
佳维视工业级显示器在数码印刷设备中的应用
计算机外设
林恒smileZAZ6 天前
用 Vue 3 + Electron 做桌宠:从启动退出到拖拽、单击与鼠标穿透
vue.js·electron·计算机外设
科创致远9 天前
第一代 e+SOP 盒子配显示器实测:物美价廉的产线可视化方案
大数据·网络·人工智能·信息可视化·计算机外设·制造·精益工程