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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用哈希函数介绍_简单说哈希函数是什么

    常用哈希函数介绍_简单说哈希函数是什么哈希函数介绍什么是哈希?在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。哈希函数就是一种映射,是从关键字到存储地址的映射。通常,包含哈希函数的算法的算法复杂度都假设为O(1),这就是为什么在哈希表中搜索数据的时间复杂度会被认为是”平均为O(1)的复杂度”.在讲解具体内容前,首先我们要清楚以下几个概念:冲突(碰撞)对于不同的关键字ki、kj,若ki!=kj,但H(ki)=H(kj)的现象叫冲突(collision),即不同的输入却有相同的输出。我们应该尽量避免冲突,因为冲

    2025年6月27日
    5
  • c++入门教程–-7嵌套循环

    c++入门教程–-7嵌套循环

    2021年3月12日
    157
  • 【PHP】最详细PHP从入门到精通(一)

    【PHP】最详细PHP从入门到精通(一)转载来自 https www cnblogs com liuyongqi p 6885669 html nbsp PHP 从入门到精通 一 PHP 简介和基本知识 PHP 外文名 PHP HypertextPre 中文名 超文本预处理器 是一种通用开源脚本语言 语法吸收了 C 语言 Java 和 Perl 的特点 利于学习 使用广泛 主要适用于 Web 开发领域 PHP 独特的语法混合了 C

    2025年10月3日
    1
  • Idea激活码最新教程2021.1.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2021.1.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2021 1 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2021 1 3 成功激活

    2025年5月22日
    4
  • 分布式锁的实现和应用场景_predis分布式锁的应用

    分布式锁的实现和应用场景_predis分布式锁的应用文章目录如何理解分布式锁分布式锁的常用实现基于关系型数据库存在单点故障风险不可重入无法实现阻塞应用Redis缓存基于ZooKeeper实现电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。如何理解分布式锁我们都知道,在业务开发中,为了保证在多线程下处理

    2025年10月3日
    3
  • linux firefox flashplayer 升级,redhat7升级自带的firefox浏览器并安装flash_player插件

    linux firefox flashplayer 升级,redhat7升级自带的firefox浏览器并安装flash_player插件升级自带的firefox浏览器linux这里使用的升级方法是直接用新版本的firefox软件包替换原来的firefox文件夹api一、下载firefox浏览器浏览器去firefox官网http://www.firefox.com.cn/找到linux版本下载spa二、找到下载的文件,在非root用户下解压firefox[vaon@stationDownloads]$tarjxfFirefox…

    2022年5月2日
    61

发表回复

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

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