zoukankan      html  css  js  c++  java
  • 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

    =后台:

    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 }
  • 相关阅读:
    分布图
    针对回归训练卷积神经网络
    polyfit 多项式曲线拟合matlab
    Re-run failed tests in testng
    URI 和 URL的区别
    十分钟理解Gradle
    移动App测试实战—专项测试(转)
    adb 常用命令
    MySQL基本操作
    Java注解
  • 原文地址:https://www.cnblogs.com/benbenfishfish/p/2092401.html
Copyright © 2011-2022 走看看