一个朋友问了我个问题,说怎么在wpf程序中增加音乐.搜索了下msdn看到了个类MediaElement.
把用法总结下贴出来.
MediaElement类是一个播放audio和video的类.
前台加入以下代码:
<
StackPanel
Background
="Black"
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<
MediaElement
Source
="numbers.wmv"
Name
="myMediaElement"
Width
="450"
Height
="250"
LoadedBehavior
="Manual"
UnloadedBehavior
="Stop"
Stretch
="Fill"
MediaOpened
="Element_MediaOpened"
MediaEnded
="Element_MediaEnded"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<
StackPanel
HorizontalAlignment
="Center"
Width
="450"
Orientation
="Horizontal"
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
播放按钮.
-->
<
Image
Source
="3D_menu_07.png"
MouseDown
="OnMouseDownPlayMedia"
Margin
="5"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
暂停按钮.
-->
<
Image
Source
="3D_menu_09_2.png"
MouseDown
="OnMouseDownPauseMedia"
Margin
="5"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
停止按钮.
-->
<
Image
Source
="list4_01.png"
MouseDown
="OnMouseDownStopMedia"
Margin
="5"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
音量设置.
-->
<
TextBlock
Foreground
="White"
VerticalAlignment
="Center"
Margin
="5"
>
Volume
</
TextBlock
>
<
Slider
Name
="volumeSlider"
VerticalAlignment
="Center"
ValueChanged
="ChangeMediaVolume"
Minimum
="0"
Maximum
="1"
Value
="0.5"
Width
="70"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
播放速度设置.
-->
<
TextBlock
Foreground
="White"
Margin
="5"
VerticalAlignment
="Center"
>
Speed
</
TextBlock
>
<
Slider
Name
="speedRatioSlider"
VerticalAlignment
="Center"
ValueChanged
="ChangeMediaSpeedRatio"
Value
="1"
Width
="70"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<!--
播放进度.
-->
<
TextBlock
Foreground
="White"
Margin
="5"
VerticalAlignment
="Center"
>
Seek To
</
TextBlock
>
<
Slider
Name
="timelineSlider"
Margin
="5"
ValueChanged
="SeekToMediaPosition"
Width
="70"
/>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
</
StackPanel
>
</
StackPanel
>
后台加入以下代码:
void
OnMouseDownPlayMedia(
object
sender, MouseButtonEventArgs args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
myMediaElement.Play();//播放加载好的视频文件.
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
InitializePropertyValues();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
OnMouseDownPauseMedia(
object
sender, MouseButtonEventArgs args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
myMediaElement.Pause();//暂停播放
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
Stop the media.
void
OnMouseDownStopMedia(
object
sender, MouseButtonEventArgs args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
myMediaElement.Stop();//停止播放,再次播放会从头开始
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
private
void
ChangeMediaVolume(
object
sender, RoutedPropertyChangedEventArgs
<
double
>
args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
myMediaElement.Volume = (double)volumeSlider.Value;//更改音量
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
private
void
ChangeMediaSpeedRatio(
object
sender, RoutedPropertyChangedEventArgs
<
double
>
args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
myMediaElement.SpeedRatio = (double)speedRatioSlider.Value;//更改播放速度
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
播放开始调用的事件
private
void
Element_MediaOpened(
object
sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//设置播放进度条的最大值
timelineSlider.Maximum = myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
播放结束调用事件
private
void
Element_MediaEnded(
object
sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
myMediaElement.Stop();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
播放进度
private
void
SeekToMediaPosition(
object
sender, RoutedPropertyChangedEventArgs
<
double
>
args)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int SliderValue = (int)timelineSlider.Value;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);
myMediaElement.Position = ts;//这里跳转到播放的哪个地方
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
点击开始时设置播放的音量和播放速度
void
InitializePropertyValues()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
myMediaElement.Volume = (double)volumeSlider.Value;
myMediaElement.SpeedRatio = (double)speedRatioSlider.Value;
}