silverlight 播放器,丑丑版

silverlight 播放器,丑丑版

 看到园子里的大虾们写了播放器,这不,我也写了一个和大家在此分享一下.

  分别是前台和后台;

备注:参考了一些园子里朋友的代码片段,该播放器是一个独立的 操作界面

需要传入 音频路径 .为了测试 您可以直接赋值给url


1

<
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

=后台:

ContractedBlock.gif
ExpandedBlockStart.gif
View Code


1
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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110601.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux命令手册 apk_linux命令全集

    linux命令手册 apk_linux命令全集linux手册app是一款学习教育应用,是个能让你快速查询linux命令的手机软件。此外在linux手册app中还有学习手册,让你可随时查询不清楚的知识点。基本简介linux手册包app含linux命令速查以及一个linux简易学习教程,是学习linux必备宝典,命令速查可以快速知道linux命令使用方法,并且配有学习手册,方便及时查阅不懂知识。功能介绍1,linux简易教程方便随时阅读2,命令搜…

    2022年9月14日
    2
  • Ubuntu彻底卸载pycharm的方法[通俗易懂]

    Ubuntu彻底卸载pycharm的方法[通俗易懂]1.查看配置信息位置首先在解压的pycharm-2020.2.1文件夹中,查看Install-Linux-tar.txt,找到配置信息的位置(下图中蓝色标识)。2.卸载安装文件首先找到安装文件所在的目录,cd切换至其目录,然后sudorm-rfpycharm-2020.2.13.删除配置信息依次cd切换至Pycharm2020.2的位置,然后rm删除掉该用户使用记录,即能实现完全卸载。…

    2022年8月27日
    4
  • 关于 ioctl 的 FIONREAD 參数

    关于 ioctl 的 FIONREAD 參数ioctl是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。ioctl(keyFd,FIONREAD,&b)得到缓冲区里有多少字节要被读取,然后将字节数放入b里面。接下来就能够用read了。read(keyFd,&b,size…

    2022年7月23日
    11
  • SpringBoot 事务注解@Transactional

    SpringBoot 事务注解@TransactionalSpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。1.事务说明在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。编程式事务管理:编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,…

    2022年5月8日
    222
  • 逆向-加壳工具介绍

    逆向-加壳工具介绍经过两周尝试手动编写加壳程序,目前也只是能实现给PE文件添加新区块,后面还有重定位表的修复,地址输入表的处理,虚拟机和花指令技术等反调试手段…一大串要学习的工作,几乎就是放弃了吧,通过这两周学习能让自己对PE文件和偏移地址、虚拟地址有一定了解也算不亏。目前就是转而向使用工具方向了。目前加壳的两个主要方向是压缩和加密。压缩壳压缩壳以UPX为代表,使用方法在前面的文章中有,此类壳的功能已压缩为主,对文件的加密效果几乎没有,Peid等侦壳工具可以轻而易举地发现这些壳,相应也有较成熟的脱壳机来实现。所以当文件

    2022年6月27日
    34
  • python 将读取的数据写入txt文件_c中怎样将数据写入txt文件

    python 将读取的数据写入txt文件_c中怎样将数据写入txt文件#前面省略,从下面直奔主题,举个代码例子:result2txt=str(data)#data是前面运行出的数据,先将其转为字符串才能写入withopen(‘结果存放.txt’,’a’)asfile_handle:#.txt可以不自己新建,代码会自动新建file_handle.write(…

    2022年10月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号