簡體   English   中英

如何在不重新啟動媒體的情況下將 wpf 媒體元素傳輸到新的父元素?

[英]How do I transfer a wpf media element to a new parent element without the media restarting?

我有一個媒體元素,可以在我的 WPF 應用程序中播放 MP4 文件。 我添加了一個最小化按鈕,將媒體元素傳輸到較小的畫布(最小化),但每次單擊該按鈕時媒體都會重新啟動。 我需要它從停止的地方繼續播放。 我該怎么做? 在單擊最小化按鈕之前暫停媒體允許它從它停止的地方繼續播放,但不能始終如一地工作。

    public void ResumeMethod() 
    {
        Show_MediaScreen.Position = Show_MediaScreen.Position;

        stopWatch.Start();
        dispatcherTimer.Start();

        Show_MediaScreen.Play();


        btnPlayTiny.Visibility = Visibility.Hidden;
        btnPauseTiny.Visibility = Visibility.Visible;
        btnPlay.Visibility = Visibility.Hidden;
        btnPause.Visibility = Visibility.Hidden;
    }
    public void PauseMethod()
    {
        Show_MediaScreen.Position = Show_MediaScreen.Position;

        if (stopWatch.IsRunning)
        {
            stopWatch.Stop();
        }
        // elapsedtimeitem.Items.Add(currentTime);
        btnPauseTiny.Visibility = Visibility.Hidden;
        btnPlayTiny.Visibility = Visibility.Visible;

        btnPlay.Visibility = Visibility.Hidden;
        btnPause.Visibility = Visibility.Hidden;
        Show_MediaScreen.Pause();
    }

private void ShowMediaScreen_MinimizeControl(object sender, RoutedEventArgs e)
    {


        Show_MediaScreen.Height = 200;

        Show_MediaScreen.Width = 250;

        VideoScreen.MouseEnter += new System.Windows.Input.MouseEventHandler(ShowMediaScreen_Hover_ON);
        VideoScreen.MouseLeave += new System.Windows.Input.MouseEventHandler(ShowMediaScreen_Hover_OFF);

        MyCanvas.Visibility = Visibility.Visible;
        MyCanvas_Max.Visibility = Visibility.Collapsed;


        try
        {
            PauseMethod();

            FullSize.Children.Remove(Show_MediaScreen);

            MyCanvas_Mini2.Children.Add(Show_MediaScreen);

            ResumeMethod();


        }
        catch { }



        btnPlay.Visibility = Visibility.Hidden;
        btnPause.Visibility = Visibility.Visible;



    }

我認為您可以使用MediaElement.Position屬性來獲取或設置媒體播放時間的當前進度位置。

就像你說你想做什么一樣,你可以試試下面的代碼。

首先,創建一個TimeSpan對象來保存當前位置:

TimeSpan currentPosition = new TimeSpan();

當用戶單擊最小化按鈕時,您需要獲取位置:

currentPosition = YOUR_MEDIA_ELEMENT.Position;

然后,當您將媒體元素傳輸到較小的畫布時:

YOUR_MEDIA_ELEMENT.Position = currentPosition;

有關MediaElement.Position屬性的更多信息,您可以閱讀MSDN 文檔

默認情況下, MediaElement在卸載(即從其父級中刪除)時關閉媒體並從內存中釋放視頻。

MediaElement.UnloadedBehavior屬性設置為MediaStatue.Manual以在不停止視頻的情況下將其從其父級中刪除。

暫無
暫無

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

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