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)
上一篇 2021年8月12日 上午9:00
下一篇 2021年8月12日 上午10:00


相关推荐

  • step by step学习LAMP配置

    step by step学习LAMP配置配置环境:debian6+apache+mysql+python步骤:1.在虚拟机上安装debian;2.配置虚拟机上网(采用host-only连接,单网卡,会虚拟出一个网卡,将主机的网络共享《 VMware下Linux网络配置攻略》,虚拟机和主机能够互相访问)3.配置debian,安装必要的软件包4.参考《http://library.linode.com/

    2022年6月6日
    38
  • 关于补码的理解

    关于补码的理解之前一直对补码了解不多 或者说没去了解 最近看了一些博客和书 感觉有所收获 想再细致的总结一下 作个笔记博客地址 http www ruanyifeng com blog 2009 08 twos complement html 这个博客是阮一峰老师在 09 年写的 比较通俗易懂 有很大参考价值补码是啥 它跟原码反码有啥关系 相信大家都听过原码 反码 补码 需要知道的是 这三种都是有符号

    2026年3月19日
    2
  • Python3中打开文件的方式(With open)「建议收藏」

    Python3中打开文件的方式(With open)「建议收藏」python文件读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘。读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件…

    2022年4月19日
    43
  • pycharm怎么修改html的字体大小,怎么改pycharm的字体大小

    pycharm怎么修改html的字体大小,怎么改pycharm的字体大小如何更改 pycharm 结果显示字体打开 pycharm 我们看到左边是没有行号显示的 在工具栏中点击扳手的标志 打开 找到 Ide setting gt Editor gt Apperance gt 勾选 Showlinenumb 点击 apply ok 然后我们就可以看到在代码的左边有对应的行号了 linuxpycharm 怎么改字体方法 步骤 1 首先 在 F

    2026年3月27日
    1
  • linux系统休眠唤醒_centos休眠后怎么唤醒

    linux系统休眠唤醒_centos休眠后怎么唤醒背景介绍:睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的一些缺陷(所有模块必须同时睡下或者唤醒),在某些情况下,这会导致能耗的白白浪费。因此Android在标准Linux睡眠唤醒的机制上作了新的改动(wake_lock唤…

    2026年1月18日
    6
  • 接口测试简介以及接口测试用例设计思路

    接口测试简介以及接口测试用例设计思路接口测试简介1.什么是接口接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,就好比usb接口,他是系统向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的,我们还的对这个接口怎么进行传输进行进行一些设置和定义。开发所谓的接口是模块模块之间的一种连接,而测试眼中的接口是一种协议(对接口的功能的一种定义)2.接口的种类和分类外部接…

    2022年6月28日
    31

发表回复

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

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