首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在C#中使用跟踪条更改音频位置

无法在C#中使用跟踪条更改音频位置
EN

Stack Overflow用户
提问于 2016-04-28 13:58:05
回答 2查看 815关注 0票数 2

我在一家小型音响公司工作。你知道,用最简单的东西和功能。

我有一个问题,当改变轨迹栏的值(滚动),这个轨迹栏显示当前的音频位置。

当我拖动跟踪条的滑块时,音频位置应该会改变。我正在使用CSCore音频库。这是我用来更新当前音频播放位置的代码:

代码语言:javascript
运行
复制
private void ProgressTimerTick(object sender, EventArgs e)
{
SongProgressTrackbar.MaxValue = (int)audioPlayer.Length.TotalMilliseconds;
SongProgress.Value = (int)audioPlayer.Position.TotalMilliseconds;
}

这工作得很好,没有问题。

但是这个..。

代码语言:javascript
运行
复制
private void SongProgressTrackbar_Scroll(object sender, ScrollEventArgs e)
{
Timespan newPos = new Timespan(SongProgressTrackbar.Value);
audioPlayer.Position = newPos;
}

这里发生的情况是,当事件被触发时,音频再次转到开始位置,而不是将位置更改为我在跟踪栏中单击的位置,而是再次开始。

那么,我写错了什么?我尝试使用ValueChanged事件,但那只能使音频停留在0:00位置。正如我所说的,TimerTick确实可以工作。但每当我滚动轨迹栏时,音频都会从头开始。

希望有人能帮我解决这个问题。提前感谢-建行

EN

回答 2

Stack Overflow用户

发布于 2016-04-28 14:23:37

有一个问题在您的转换跟踪条值到时间。您的代码返回微秒:

代码语言:javascript
运行
复制
Timespan newPos = new Timespan(SongProgressTrackbar.Value);

您应该像这样使用:(此返回秒数)

代码语言:javascript
运行
复制
Timespan newPos = new Timespan(0,0,SongProgressTrackbar.Value);

此代码将跟踪条转换为秒。谢谢。

票数 1
EN

Stack Overflow用户

发布于 2016-04-28 14:36:18

您应该将毫秒转换为滴答。一个滴答声代表一百纳秒或十万分之一秒。一毫秒有一万个滴答,或者一秒有一千万个滴答。一次参数使用TimeSpan会得到滴答形式的值。

代码语言:javascript
运行
复制
Timespan newPos = new Timespan(SongProgressTrackbar.Value * 10000);

谢谢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36906386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档