我已将导入按钮与媒体元素相关联,因此我可以播放该歌曲。
// Create OpenFileDialog
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
// Set filter for file extension and default file extension
dlg.DefaultExt = ".txt";
dlg.Filter = "WAV Files (*.wav)|*.wav|MP3 Files (*.mp3)|*.mp3|MP4 Files (*.mp4)|*.mp4|WMA Files (*.wma)|*.wma|SWA (*.swa)|*.swa";
// Display OpenFileDialog by calling ShowDialog method
Nullable<bool> result = dlg.ShowDialog();
// Get the selected file name and display in a TextBox
if (result == true)
{
// Open document
meMedia1.Source = new Uri(dlg.FileName);
meMedia1.Play();
//txtFileLocation.Text = filename;
现在,声音播放但我想要做的是链接一个滑块,这样他们就可以跳过一些歌曲,也可以跳过滑块上方的标签,以便它可以读出歌曲的长度。这就是我的应用程序现在看起来如何给你一个想法。
http://i.stack.imgur.com/sVtrd.png
谢谢。
编辑:寻求改变歌曲位置,但我仍然无法手动移动到歌曲的时间,例如,如果我跳到歌曲的中间,让歌曲完成我的滑块仍将是在中间,我希望它在最后。答案 0 :(得分:0)
一种方法是创建一个DispatcherTimer,每隔200-800ms(取决于您对更新速度的偏好),将滑块与播放器的当前位置同步。该代码可能与此类似:
// In the class members area
private DispatcherTimer _timer = null;
// In your constructor/loaded method
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(500);
_timer.Tick += _timer_tick;
// Timer's tick method
void _timer_tick(object sender, EventArgs e)
{
// Convert duration to an integer percentage based on current position of
// playback and update the slider control
TimeSpan ts = meMedia1.NaturalDuration.TimeSpan;
int percent = int( meMedia1.Position / ts.Seconds * 100 );
mySliderControl.Value = percent;
}
请注意,这假设您有一个Slider
,其Min为0且Max为100.您可以将其提升到0-1000(并相应地更改数学)以获得更精细的粒度。这也不允许滑块将用户交互推送回播放器,但是让您了解一种相反的方法。您可以向Slider添加事件处理程序,以便在用户开始交互时,此_timer
停止(_timer.Stop()
),因此更新媒体位置会停止更新滑块,而是开始执行滑块 - &gt ;媒体位置更新。然后当用户放开滑块时,重新打开_timer
(_timer.Start()
)。