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 }
  • 相关阅读:
    LeetCode Count of Range Sum
    LeetCode 158. Read N Characters Given Read4 II
    LeetCode 157. Read N Characters Given Read4
    LeetCode 317. Shortest Distance from All Buildings
    LeetCode Smallest Rectangle Enclosing Black Pixels
    LeetCode 315. Count of Smaller Numbers After Self
    LeetCode 332. Reconstruct Itinerary
    LeetCode 310. Minimum Height Trees
    LeetCode 163. Missing Ranges
    LeetCode Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/benbenfishfish/p/2092401.html
Copyright © 2011-2022 走看看