Win10系列:VC++媒体播放控制1

时间:2021-06-22 16:57:09

在MediaElement控件中定义了用于控制视频播放的函数,如Play、Pause和Stop等函数。本小节将在20.6.1小节所新建的项目基础上继续来介绍如何为视频添加播放控制,并在最后一部分给出项目的完整前台代码,读者可以参照此代码来布局前台界面。

(1)启动视频播放

首先打开MainPage.xaml文件,并在Grid元素中原有代码的基础上继续添加如下的代码:

<TextBlock x:Name="VideoState" Margin="114,13,0,0" FontSize="15" HorizontalAlignment="Left" Text="播放状态:"></TextBlock>

<Button x:Name="PlayButton" Click="PlayClick" HorizontalAlignment="Left" Margin="114,0,10,0" Content="播放" Grid.Column="0"></Button>

在上面的代码中,添加一个TextBlock控件和一个"播放"按钮,将这个TextBlock控件命名为VideoState,用于显示视频的播放状态。"播放"按钮用来播放MediaElement控件中的视频文件。

添加上述的代码以后,接下来为"播放"按钮添加单击事件处理函数PlayClick。打开MainPage.xaml.h头文件,并添加如下的代码,用来声明PlayClick函数。

private:

    //播放按钮

    void PlayClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);

声明了PlayClick函数以后,打开MainPage.xaml.cpp源文件,添加PlayClick函数的实现代码,具体代码如下所示:

//播放按钮

void FileDemo::MainPage::PlayClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

    //设置播放速率

    Video->DefaultPlaybackRate=1.0;

    //播放视频

    Video->Play();

    //显示播放状态

    VideoState->Text="播放状态:"+Video->CurrentState.ToString();

}

在上面的代码中,MediaElement控件的DefaultPlaybackRate属性用于设置视频的播放速率,这里将此属性赋值为1.0,表示以正常的播放速率播放MediaElement控件中的视频文件。然后调用MediaElement控件的Play函数开始播放视频文件。接下来使用MediaElement控件中的CurrentState属性得到视频的播放状态,并调用ToString函数将其转换成字符串类型,显示到名为"VideoState"的TextBlock控件中。

前台界面的显示效果如图20-9所示。

Win10系列:VC++媒体播放控制1

图20-9播放视频

(2)暂停视频播放

下面继续添加对视频文件播放的暂停控制。首先布局前台界面,打开MainPage.xaml文件,并在Grid元素中添加一个"暂停"按钮,用于暂停视频的播放,代码如下所示:

<Button x:Name="PauseButton" Click="PauseClick" HorizontalAlignment="Left" Margin="10,0,10,0" Content="暂停" Grid.Column="1"></Button>

添加了"暂停"按钮以后,接下来为此按钮添加单击事件处理函数PauseClick。打开MainPage.xaml.h头文件,并添加如下的代码,用来声明PauseClick函数。

private:

    //暂停按钮

    void PauseClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);

声明了PauseClick函数以后,接着打开MainPage.xaml.cpp源文件,并添加PauseClick函数的实现代码,具体代码如下所示:

//暂停按钮

void FileDemo::MainPage::PauseClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

    //暂停正在播放的视频

    Video->Pause();

    VideoState->Text="播放状态:"+Video->CurrentState.ToString();

}

在PauseClick函数中调用了MediaElement控件的Pause函数,执行Pause函数时将暂停MediaElement控件中正在播放的视频。然后使用MediaElement控件中的CurrentState属性得到视频的播放状态,并调用ToString函数将其转换成字符串类型,显示到名为"VideoState"的TextBlock控件中。

添加了"暂停"按钮后,前台界面的显示效果如图20-10所示,"暂停"按钮显示在"播放"按钮之后。

Win10系列:VC++媒体播放控制1

图20-10暂停播放