C# 使用标签和滑块链接WPF上的媒体元素
我已将导入按钮与媒体元素链接,以便播放歌曲C# 使用标签和滑块链接WPF上的媒体元素,c#,wpf,mediaelement,C#,Wpf,Mediaelement,我已将导入按钮与媒体元素链接,以便播放歌曲 // Create OpenFileDialog Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); // Set filter for file extension and default file extension dlg.DefaultExt = ".txt";
// 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;
//创建OpenFileDialog
Microsoft.Win32.OpenFileDialog dlg=新的Microsoft.Win32.OpenFileDialog();
//为文件扩展名和默认文件扩展名设置筛选器
dlg.DefaultExt=“.txt”;
dlg.Filter=“WAV文件(*.WAV)|*.WAV | MP3文件(*.MP3)|*.MP4文件(*.MP4)|*.MP4 | WMA文件(*.WMA)|*.WMA | SWA(*.SWA)|*.SWA”;
//通过调用ShowDialog方法显示OpenFileDialog
可为空的结果=dlg.ShowDialog();
//获取所选文件名并显示在文本框中
如果(结果==真)
{
//打开文件
meMedia1.Source=新Uri(dlg.FileName);
meMedia1.Play();
//txtFileLocation.Text=文件名;
现在,声音播放,但我想做的是链接一个滑块,这样他们就可以跳过一些歌曲,还可以在滑块上方添加一个标签,这样它就可以读取歌曲的播放时间。这就是我的应用程序现在的样子,让你有一个想法
多谢各位
编辑:得到改变歌曲位置的搜索,但我仍然不能手动移动到歌曲的时间,例如,如果我跳过歌曲的中间,让歌曲结束我的滑块仍然在中间,我希望它在结尾。(取决于您对更新速度的偏好)将滑块同步到播放机的当前位置。该代码可能类似于:
// 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;
}
请注意,这假设您有一个滑块,其最小值为0,最大值为100。您可以将其增加到0-1000(并相应地更改数学)以获得更精细的粒度。这也不允许滑块将用户交互推回到播放器,但为您提供了一种实现相反效果的方法。您可以向滑块添加事件处理程序,以便当用户开始交互时,此\u timer
停止(\u timer.Stop()
)因此,对媒体位置的更新停止更新滑块,而是开始执行滑块->媒体位置更新。然后,当用户松开滑块时,将\u定时器
重新打开(\u timer.start()
)