看到园子里的大虾们写了播放器,这不,我也写了一个和大家在此分享一下.
分别是前台和后台;
备注:参考了一些园子里朋友的代码片段,该播放器是一个独立的 操作界面
需要传入 音频路径 .为了测试 您可以直接赋值给url
<
Grid x:Name
=
“
LayoutRoot
“
Background
=
“
White
“
Height
=
“
237
“
Width
=
“
499
“
>
2
3
<
MediaElement Height
=
“
0
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
12,12,0,0
“
Name
=
“
myElement
“
VerticalAlignment
=
“
Top
“
Width
=
“
0
“
LoadedBehavior
=
“
Manual
“
MediaEnded
=
“
myElement_MediaEnded
“
/>
4
<
Button Content
=
“
播放
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
10,41,0,0
“
Name
=
“
button1
“
VerticalAlignment
=
“
Top
“
Width
=
“
75
“
Click
=
“
button1_Click
“
/>
5
<
Button Content
=
“
暂停
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
111,41,0,0
“
Name
=
“
button2
“
VerticalAlignment
=
“
Top
“
Width
=
“
75
“
Click
=
“
button2_Click
“
/>
6
<
Button Content
=
“
停止
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
211,41,0,0
“
Name
=
“
button3
“
VerticalAlignment
=
“
Top
“
Width
=
“
75
“
Click
=
“
button3_Click
“
/>
7
<
Button Content
=
“
静音
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
319,41,0,0
“
Name
=
“
button4
“
VerticalAlignment
=
“
Top
“
Width
=
“
75
“
Click
=
“
button4_Click
“
/>
8
<
Label Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
138,84,0,0
“
Name
=
“
label1
“
VerticalAlignment
=
“
Top
“
Width
=
“
120
“
/>
9
<
TextBlock Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
10,113,0,0
“
Name
=
“
textBlock2
“
Text
=
“
当前进度;
“
VerticalAlignment
=
“
Top
“
/>
10
<
Slider Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
64,108,0,0
“
Name
=
“
slider1
“
VerticalAlignment
=
“
Top
“
Width
=
“
293
“
Value
=
“
{Binding ElementName=myElement,Path=Position}
“
ValueChanged
=
“
slider1_ValueChanged
“
/>
11
<
Label Height
=
“
23
“
HorizontalAlignment
=
“
Right
“
Margin
=
“
0,113,12,0
“
Name
=
“
label2
“
VerticalAlignment
=
“
Top
“
Width
=
“
132
“
/>
12
<
Label Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
12,84,0,0
“
Name
=
“
label3
“
VerticalAlignment
=
“
Top
“
Width
=
“
120
“
/>
13
<
TextBlock Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
259,147,0,0
“
Name
=
“
textBlock5
“
Text
=
“
音量;
“
VerticalAlignment
=
“
Top
“
/>
14
<
Slider Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
295,141,0,0
“
Name
=
“
slider2
“
VerticalAlignment
=
“
Top
“
Width
=
“
100
“
ValueChanged
=
“
slider2_ValueChanged
“
/>
15
<
Label Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
389,136,0,0
“
Name
=
“
label4
“
VerticalAlignment
=
“
Top
“
Width
=
“
59
“
/>
16
<
Button Content
=
“
下载
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
412,41,0,0
“
VerticalAlignment
=
“
Top
“
Name
=
“
btnDown
“
Width
=
“
75
“
Click
=
“
btnDown_Click_1
“
/>
17
<
Button Content
=
“
关闭
“
Height
=
“
23
“
HorizontalAlignment
=
“
Left
“
Margin
=
“
424,214,0,0
“
Name
=
“
button5
“
VerticalAlignment
=
“
Top
“
Width
=
“
75
“
Click
=
“
button5_Click
“
/>
18
</
Grid
>
19
=后台:
View Code
using
System;
2
using
System.Collections.Generic;
3
using
System.Linq;
4
using
System.Text;
5
using
System.Windows;
6
using
System.Windows.Controls;
7
using
System.Windows.Data;
8
using
System.Windows.Documents;
9
using
System.Windows.Input;
10
using
System.Windows.Media;
11
using
System.Windows.Media.Imaging;
12
using
System.Windows.Navigation;
13
using
System.Windows.Shapes;
14
using
System.IO;
15
using
System.Diagnostics;
16
17
namespace
eOMS.CR
18
{
19
///
<summary>
20
///
PlayWindow.xaml 的交互逻辑
21
///
</summary>
22
23
public
partial
class
PlayWindow : UserControl
24
{
25
string
Url
=
string
.Empty;
//
音频文件路径
26
string
sPath
=
string
.Empty;
//
保存文件路径
27
string
isplay
=
“
0
“
;
//
标记是否已经处于播放状态
28
System.Windows.Threading.DispatcherTimer timer
=
new
System.Windows.Threading.DispatcherTimer();
29
30
public
PlayWindow()
31
{
32
InitializeComponent();
33
34
}
35
36
public
PlayWindow(
string
SoundUrl)
37
{
38
39
try
40
{
41
42
InitializeComponent();
43
Url
=
SoundUrl;
44
myElement.Source
=
new
Uri(Url, UriKind.Absolute);
45
timer.Interval
=
new
TimeSpan(
1000
);
46
timer.Tick
+=
new
EventHandler(timer_Tick);
47
timer.Start();
48
}
49
catch
(Exception ex)
50
{
51
52
MessageBox.Show(ex.Message);
53
54
}
55
56
}
57
void
timer_Tick(
object
sender, EventArgs e)
58
{
59
label2.Content
=
string
.Format(
60
“
{0}{1:00}:{2:00}:{3:00}
“
,
61
“
播放进度:
“
,
62
myElement.Position.Hours,
63
myElement.Position.Minutes,
64
myElement.Position.Seconds);
65
label3.Content
=
string
.Format(
“
下载进度:{0:##%}
“
, myElement.DownloadProgress);
66
67
}
68
69
70
private
void
InitializePropertyValues()
71
{
72
//
myElement.Volume = (double)volumeSlider.Value;
73
//
myElement.Source = new Uri(Url, UriKind.Absolute);
74
}
75
///
<summary>
76
///
下载按钮引发的事件
77
///
</summary>
78
///
<param name=”sender”></param>
79
///
<param name=”e”></param>
80
//
播放进度
81
private
void
slider1_ValueChanged(
object
sender, RoutedPropertyChangedEventArgs
<
double
>
e)
82
{
83
84
try
85
{
86
87
if
( isplay
==
“
1
“
)
88
{
89
int
value
=
(
int
)slider1.Value;
90
int
myvalue
=
(
int
)myElement.NaturalDuration.TimeSpan.TotalSeconds;
91
TimeSpan ts
=
new
TimeSpan(
0
,
0
,
0
,
0
, value);
92
//
myElement.Position = TimeSpan.FromSeconds((myvalue* value) / 10);
93
myElement.Position
=
ts;
94
}
95
96
97
}
98
catch
(Exception ex)
99
{
100
101
throw
ex;
102
}
103
104
}
105
///
<summary>
106
///
播放
107
///
</summary>
108
///
<param name=”sender”></param>
109
///
<param name=”e”></param>
110
private
void
button1_Click(
object
sender, RoutedEventArgs e)
111
{
112
myElement.Play();
113
isplay
=
“
1
“
;
114
}
115
///
<summary>
116
///
暂停
117
///
</summary>
118
///
<param name=”sender”></param>
119
///
<param name=”e”></param>
120
private
void
button2_Click(
object
sender, RoutedEventArgs e)
121
{
122
isplay
=
“
0
“
;
123
myElement.Pause();
124
}
125
///
<summary>
126
///
停止
127
///
</summary>
128
///
<param name=”sender”></param>
129
///
<param name=”e”></param>
130
private
void
button3_Click(
object
sender, RoutedEventArgs e)
131
{
132
isplay
=
“
0
“
;
133
myElement.Stop();
134
}
135
///
<summary>
136
///
静音
137
///
</summary>
138
///
<param name=”sender”></param>
139
///
<param name=”e”></param>
140
private
void
button4_Click(
object
sender, RoutedEventArgs e)
141
{
142
myElement.IsMuted
=
!
myElement.IsMuted;
143
}
144
///
<summary>
145
///
音量控制
146
///
</summary>
147
///
<param name=”sender”></param>
148
///
<param name=”e”></param>
149
private
void
slider2_ValueChanged(
object
sender, RoutedPropertyChangedEventArgs
<
double
>
e)
150
{
151
//
音量控制
152
double
d
=
(
double
)(((
double
)slider2.Value)
/
10
);
153
myElement.Volume
=
d;
154
label4.Content
=
(
double
.Parse(d.ToString(
“
F2
“
))
*
100
)
+
“
%
“
;
155
}
156
///
<summary>
157
///
下载操作
158
///
</summary>
159
///
<param name=”sender”></param>
160
///
<param name=”e”></param>
161
private
void
btnDown_Click_1(
object
sender, RoutedEventArgs e)
162
{
163
164
System.Windows.Forms.SaveFileDialog sf
=
new
System.Windows.Forms.SaveFileDialog();
165
sf.Filter
=
“
音频文件|*.wav
“
;
166
if
( sf.ShowDialog()
==
System.Windows.Forms.DialogResult.OK)
167
{
168
String targetPath
=
sf.FileName;
169
System.IO.File.Copy(Url, targetPath,
true
);
170
}
171
172
173
}
174
///
<summary>
175
///
隐藏当前窗口
176
///
</summary>
177
///
<param name=”sender”></param>
178
///
<param name=”e”></param>
179
private
void
button5_Click(
object
sender, RoutedEventArgs e)
180
{
181
myElement.Stop();
182
myElement.Close();
183
this
.LayoutRoot.Visibility
=
Visibility.Hidden;
184
}
185
186
private
void
myElement_MediaEnded(
object
sender, RoutedEventArgs e)
187
{
188
isplay
=
“
0
“
;
189
}
190
191
192
}
193
}
转载于:https://www.cnblogs.com/benbenfishfish/archive/2011/06/28/2092401.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110601.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...