ToB企服应用市场:ToB评测及商务社交产业平台

标题: winfrom的progressBar 鼠标移上去显示 进度条的时间 [打印本页]

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

给进度条控件progressBar添加MouseMove变乱,变乱内代码如下:
  1. //鼠标在进度条上移动
  2. private void PlaybackprogressBar_MouseMove(object sender, MouseEventArgs e)
  3. {
  4.     var progressBar = this.PlaybackprogressBar;//滑块控件
  5.     // 计算鼠标位置对应的进度值
  6.     int s = CalculateMouseValue(progressBar, e.X);
  7.     int h = s / (60 * 60);//获得小时部分
  8.     int y = s % (60 * 60);//取出余数
  9.     int m = y / 60;//获得分钟部分
  10.     string hh = h.ToString().PadLeft(2, '0');
  11.     string mm = m.ToString().PadLeft(2, '0');
  12.     string time = hh + ":" + mm;//hh:mm
  13.     // 显示鼠标所在位置的进度值
  14.     this.toolTip1.SetToolTip(progressBar, $"{this.dateTimeStart.Value.ToString("yyyy-MM-dd")} {time}");
  15. }
  16. //计算进度条的值
  17. private int CalculateMouseValue(MaterialSlider progressBar, int mouseX)
  18. {
  19.     int minValue = 0;//最小值,0秒
  20.     int maxValue = 86400;//最大值,一天有:60秒*60分钟*24小时=86400秒  
  21.     // 获取 ProgressBar 的宽度
  22.     int barWidth = progressBar.Width;
  23.     // 计算鼠标位置对应的进度值
  24.     double ratio = (double)mouseX / barWidth;
  25.     int value = (int)(minValue + ratio * (maxValue - minValue));
  26.     // 确保计算的值在 ProgressBar 的有效范围内
  27.     value = Math.Max(minValue, Math.Min(maxValue, value));
  28.     return value;
  29. }
复制代码

效果如图:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4