[英]Link Media Element on WPF with Label and Slider
我已將導入按鈕與媒體元素鏈接在一起,以便可以播放歌曲。
// 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
謝謝。
編輯:尋求更改歌曲的位置,但是我仍然無法手動將其移動到歌曲的時間,例如,如果我跳到歌曲的中間,並且讓歌曲結束,我的滑塊仍將位於中間我希望它在最后。
一種方法是創建一個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
其Slider
的最小值為0,最大值為100。您可以將其增大到0-1000(並相應地更改數學值)以獲得更細的粒度。 這也不允許滑塊將用戶交互推回播放器,但是為您提供了一種相反的方法的想法。 您可以向滑塊添加事件處理程序,以便在用戶開始交互時,此_timer
停止( _timer.Stop()
),因此對媒體位置的更新將停止更新滑塊,而是開始進行滑塊->媒體位置更新。 然后,當用戶放開滑塊時,重新打開_timer
( _timer.Start()
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.