簡體   English   中英

使用標簽和滑塊在WPF上鏈接媒體元素

[英]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;
}

請注意,這是假定您有一個SliderSlider的最小值為0,最大值為100。您可以將其增大到0-1000(並相應地更改數學值)以獲得更細的粒度。 這也不允許滑塊將用戶交互推回播放器,但是為您提供了一種相反的方法的想法。 您可以向滑塊添加事件處理程序,以便在用戶開始交互時,此_timer停止( _timer.Stop() ),因此對媒體位置的更新將停止更新滑塊,而是開始進行滑塊->媒體位置更新。 然后,當用戶放開滑塊時,重新打開_timer_timer.Start() )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM