1. <Style x:Key="btnFallback" TargetType="{x:Type Button}">
  2. <Setter Property="Template">
  3. <Setter.Value>
  4. <ControlTemplate TargetType="{x:Type Button}">
  5. <Border x:Name="bd" Height="50" Width="50" Background="Transparent" CornerRadius="36" BorderBrush="Gray" BorderThickness="2">
  6. <Path x:Name="p1" Data="M576 160v320l320-320v704l-320-320v320l-352-352z" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Top="10" Fill="Gray" Height="30" Stretch="Fill" Width="30" Canvas.Left="0" Margin="0 0 5 0"/>
  7. </Border>
  8. <ControlTemplate.Triggers>
  9. <Trigger Property="IsMouseOver" Value="True">
  10. <Setter Property="BorderBrush" TargetName="bd" Value="white"/>
  11. <Setter Property="Fill" TargetName="p1" Value="white"/>
  12. </Trigger>
  13. </ControlTemplate.Triggers>
  14. </ControlTemplate>
  15. </Setter.Value>
  16. </Setter>
  17. </Style>
  18. <Style x:Key="btnPlay" TargetType="{x:Type Button}">
  19. <Setter Property="Template">
  20. <Setter.Value>
  21. <ControlTemplate TargetType="{x:Type Button}">
  22. <Border x:Name="bd" Height="60" Width="60" Background="Transparent" CornerRadius="36" BorderBrush="Gray" BorderThickness="2">
  23. <Path x:Name="p1" Data="M790.857 529.714l-758.857 421.714q-13.143 7.429-22.571 1.714t-9.429-20.571v-841.143q0-14.857 9.429-20.571t22.571 1.714l758.857 421.714q13.143 7.429 13.143 17.714t-13.143 17.714z"
  24. HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Top="10" Fill="Gray" Height="30" Stretch="Fill" Width="30" Canvas.Left="0" Margin="10 0 5 0"/>
  25. </Border>
  26. <ControlTemplate.Triggers>
  27. <Trigger Property="IsMouseOver" Value="True">
  28. <Setter Property="BorderBrush" TargetName="bd" Value="white"/>
  29. <Setter Property="Fill" TargetName="p1" Value="white"/>
  30. </Trigger>
  31. </ControlTemplate.Triggers>
  32. </ControlTemplate>
  33. </Setter.Value>
  34. </Setter>
  35. </Style>
  36. <Style x:Key="btnStop" TargetType="{x:Type Button}">
  37. <Setter Property="Template">
  38. <Setter.Value>
  39. <ControlTemplate TargetType="{x:Type Button}">
  40. <Border x:Name="bd" Height="60" Width="60" Background="Transparent" CornerRadius="36" BorderBrush="Gray" BorderThickness="2">
  41. <Path x:Name="p1" Data="M877.714 109.714v804.571q0 14.857-10.857 25.714t-25.714 10.857h-292.571q-14.857 0-25.714-10.857t-10.857-25.714v-804.571q0-14.857 10.857-25.714t25.714-10.857h292.571q14.857 0 25.714 10.857t10.857 25.714zM365.714 109.714v804.571q0 14.857-10.857 25.714t-25.714 10.857h-292.571q-14.857 0-25.714-10.857t-10.857-25.714v-804.571q0-14.857 10.857-25.714t25.714-10.857h292.571q14.857 0 25.714 10.857t10.857 25.714z"
  42. HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Top="10" Fill="Gray" Height="30" Stretch="Fill" Width="30" Canvas.Left="0" Margin="5 0 5 0"/>
  43. </Border>
  44. <ControlTemplate.Triggers>
  45. <Trigger Property="IsMouseOver" Value="True">
  46. <Setter Property="BorderBrush" TargetName="bd" Value="white"/>
  47. <Setter Property="Fill" TargetName="p1" Value="white"/>
  48. </Trigger>
  49. </ControlTemplate.Triggers>
  50. </ControlTemplate>
  51. </Setter.Value>
  52. </Setter>
  53. </Style>
  54. <Style x:Key="btnFast" TargetType="{x:Type Button}">
  55. <Setter Property="Template">
  56. <Setter.Value>
  57. <ControlTemplate TargetType="{x:Type Button}">
  58. <Border x:Name="bd" Height="50" Width="50" Background="Transparent" CornerRadius="36" BorderBrush="Gray" BorderThickness="2">
  59. <Path x:Name="p1" Data="M25.714 943.429q-10.857 10.857-18.286 7.429t-7.429-18.286v-841.143q0-14.857 7.429-18.286t18.286 7.429l405.714 405.714q4.571 4.571 7.429 10.857v-405.714q0-14.857 7.429-18.286t18.286 7.429l405.714 405.714q10.857 10.857 10.857 25.714t-10.857 25.714l-405.714 405.714q-10.857 10.857-18.286 7.429t-7.429-18.286v-405.714q-2.857 5.714-7.429 10.857z"
  60. HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Top="10" Fill="Gray" Height="30" Stretch="Fill" Width="30" Canvas.Left="0" Margin="6 0 0 0"/>
  61. </Border>
  62. <ControlTemplate.Triggers>
  63. <Trigger Property="IsMouseOver" Value="True">
  64. <Setter Property="BorderBrush" TargetName="bd" Value="white"/>
  65. <Setter Property="Fill" TargetName="p1" Value="white"/>
  66. </Trigger>
  67. </ControlTemplate.Triggers>
  68. </ControlTemplate>
  69. </Setter.Value>
  70. </Setter>
  71. </Style>
  72. <Style x:Key="btnOpen" TargetType="{x:Type Button}">
  73. <Setter Property="Template">
  74. <Setter.Value>
  75. <ControlTemplate TargetType="{x:Type Button}">
  76. <Border x:Name="bd" Height="60" Width="160" Background="Transparent" CornerRadius="3" BorderBrush="Gray" BorderThickness="2">
  77. <StackPanel Orientation="Horizontal" Margin="30 0 0 0">
  78. <Path x:Name="p1" Data="M1073.714 544q0 17.714-17.714 37.714l-192 226.286q-24.571 29.143-68.857 49.429t-82 20.286h-621.714q-19.429 0-34.571-7.429t-15.143-24.571q0-17.714 17.714-37.714l192-226.286q24.571-29.143 68.857-49.429t82-20.286h621.714q19.429 0 34.571 7.429t15.143 24.571zM877.714 347.429v91.429h-475.429q-53.714 0-112.571 27.143t-93.714 68.286l-195.429 229.714q0-2.286-0.286-7.143t-0.286-7.143v-548.571q0-52.571 37.714-90.286t90.286-37.714h182.857q52.571 0 90.286 37.714t37.714 90.286v18.286h310.857q52.571 0 90.286 37.714t37.714 90.286z"
  79. HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Top="10" Fill="Gray" Height="30" Stretch="Fill" Width="30" Canvas.Left="0" Margin="0 0 5 0"/>
  80. <TextBlock Text="打开文件..." Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  81. </StackPanel>
  82. </Border>
  83. <ControlTemplate.Triggers>
  84. <Trigger Property="IsMouseOver" Value="True">
  85. <Setter Property="BorderBrush" TargetName="bd" Value="white"/>
  86. <Setter Property="Fill" TargetName="p1" Value="white"/>
  87. </Trigger>
  88. </ControlTemplate.Triggers>
  89. </ControlTemplate>
  90. </Setter.Value>
  91. </Setter>
  92. </Style>
  93.  
  94. <Grid>
  95. <Grid Margin="2">
  96. <Grid.RowDefinitions>
  97. <RowDefinition Height="*"/>
  98. <RowDefinition Height="90"/>
  99. </Grid.RowDefinitions>
  100. <MediaElement x:Name="MePack" Grid.RowSpan="2" MediaOpened="MePack_MediaOpened" LoadedBehavior="Manual"/>
  101. <Border x:Name="bdMain" Grid.RowSpan="2" Background="#161D27">
  102. <Button Style="{StaticResource btnOpen}" Click="openBtn_Click"/>
  103. </Border>
  104. <Grid Grid.Row="2" Height="80" Background="Black" Opacity=".8">
  105. <Grid.ColumnDefinitions>
  106. <ColumnDefinition Width="*"/>
  107. <ColumnDefinition Width="80"/>
  108. <ColumnDefinition Width="80"/>
  109. <ColumnDefinition Width="80"/>
  110. <ColumnDefinition Width="*"/>
  111. </Grid.ColumnDefinitions>
  112. <Grid.RowDefinitions>
  113. <RowDefinition Height="20"/>
  114. <RowDefinition Height="*"/>
  115. </Grid.RowDefinitions>
  116. <Slider x:Name="CvSlider" Grid.ColumnSpan="5" Style="{StaticResource SliderEnter}"
  117. PreviewMouseLeftButtonDown="CvSlider_PreviewMouseLeftButtonDown"
  118. PreviewMouseLeftButtonUp="CvSlider_PreviewMouseLeftButtonUp"
  119. ValueChanged="CvSlider_ValueChanged"
  120. Maximum="0"
  121. IsMoveToPointEnabled="True"/>
  122. <Button x:Name="btnBack" Grid.Row="1" Grid.Column="1" Style="{StaticResource btnFallback}" Margin="10 5" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  123. <Button x:Name="btnPlay" Grid.Row="1" Grid.Column="2" Style="{StaticResource btnPlay}" Margin="10 0" HorizontalAlignment="Center" VerticalAlignment="Center" Click="btnSwitch" Tag="0" ToolTip="播放"/>
  124. <Button x:Name="btnStop" Grid.Row="1" Grid.Column="2" Visibility="Hidden" Style="{StaticResource btnStop}" Margin="10 0" HorizontalAlignment="Center" VerticalAlignment="Center" Click="btnSwitch" Tag="1" ToolTip="暂停"/>
  125. <Button x:Name="btnFast" Grid.Row="1" Grid.Column="3" Style="{StaticResource btnFast}" Margin="10 5" HorizontalAlignment="Center" VerticalAlignment="Center"/>
  126. <TextBlock x:Name="TimeLengh" Text="00:00:00" Margin="10" Grid.Column="4" Grid.Row="1" HorizontalAlignment="Right"/>
  127. </Grid>
  128. </Grid>
  129. </Grid>
  1. public DispatcherTimer tm = new DispatcherTimer();
  2. public TimeSpan ts = new TimeSpan();
  3. ;
  4. public MediaElementMain()
  5. {
  6. InitializeComponent();
  7. tm.Tick += tm_Tick;
  8. tm.Interval = TimeSpan.FromSeconds(0.05);
  9. tm.Start();
  10. }
  11.  
  12. void tm_Tick(object sender, EventArgs e)
  13. {
  14. )
  15. {
  16. this.CvSlider.Value = MePack.Position.TotalSeconds;
  17. ;//时
  18. ;
  19. ;//分
  20. ;//秒
  21.  
  22. ;//时
  23. ;
  24. ;//分
  25. ;//秒
  26. TimeLengh.Text = d.ToString() + ":" + f.ToString() + ":" + w.ToString() + "/" + o.ToString() + ":" + k.ToString() + ":" + l.ToString();
  27. }
  28. }
  29.  
  30. private void openBtn_Click(object sender, RoutedEventArgs e)
  31. {
  32. OpenFileDialog openFile = new OpenFileDialog();
  33. openFile.Filter = "ir files (*.wmv)||*.avi||*.mp3||*.mp4||All files (*.*)|*.*"; //过滤文件类型
  34. if (openFile.ShowDialog() == true)
  35. {
  36. MePack.Source = new Uri(openFile.FileName,UriKind.Relative);
  37. MePack.Play();
  38. bdMain.Visibility = Visibility.Hidden;
  39. btnStop.Visibility = Visibility.Visible;
  40. btnPlay.Visibility = Visibility.Hidden;
  41. //getTime(openFile.FileName);
  42. }
  43. }
  44. //public static string getTime(string path)
  45. //{
  46. // try
  47. // {
  48. // Shell32.Shell shell = new Shell32.ShellClass();
  49. // //文件路径
  50. // Shell32.Folder folder = shell.NameSpace(path.Substring(0, path.LastIndexOf("\\")));
  51. // //文件名称
  52. // Shell32.FolderItem folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + 2));
  53. // return folder.GetDetailsOf(folderitem, 21);
  54. // }
  55. // catch (Exception ex)
  56. // {
  57. // return null;
  58. // }
  59. //}
  60. private void MePack_MediaOpened(object sender, RoutedEventArgs e)
  61. {
  62. btnSwitch(btnPlay, null);
  63. CvSlider.Minimum = ;
  64. CvSlider.Maximum = MePack.NaturalDuration.TimeSpan.TotalSeconds;
  65. TimeSpan totaotp = MePack.NaturalDuration.TimeSpan;
  66. }
  67. private void btnSwitch(object sender, RoutedEventArgs e)
  68. {
  69. if (MePack.Source != null)
  70. {
  71. Button btn = sender as Button;
  72. int num = Convert.ToInt32(btn.Tag);
  73. )
  74. {
  75. MePack.Pause();
  76. btnStop.Visibility = Visibility.Hidden;
  77. btnPlay.Visibility = Visibility.Visible;
  78. }
  79. else
  80. {
  81. MePack.Play();
  82. btnStop.Visibility = Visibility.Visible;
  83. btnPlay.Visibility = Visibility.Hidden;
  84. }
  85. }
  86. }
  87.  
  88. private void CvSlider_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  89. {
  90. begin = ;
  91. }
  92.  
  93. private void CvSlider_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  94. {
  95. MePack.Position = ts;
  96. ;//时
  97. ;
  98. ;//分
  99. ;//秒
  100.  
  101. ;//时
  102. ;
  103. ;//分
  104. ;//秒
  105. TimeLengh.Text = d.ToString() + ":" + f.ToString() + ":" + w.ToString() + "/" + o.ToString() + ":" + k.ToString() + ":" + l.ToString();
  106. begin = (int)ts.TotalSeconds;
  107. }
  108.  
  109. private void CvSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  110. {
  111. ts = TimeSpan.FromSeconds(e.NewValue);
  112. ;//时
  113. ;
  114. ;//分
  115. ;//秒
  116.  
  117. ;//时
  118. ;
  119. ;//分
  120. ;//秒
  121. TimeLengh.Text = d.ToString() + ":" + f.ToString() + ":" + w.ToString() + "/" + o.ToString() + ":" + k.ToString() + ":" + l.ToString();
  122. }

效果图:

http://www.cnblogs.com/yanjinhua/p/5643459.html

模仿迅L看看<音频播放器> 实现点击进度条,跳转播放的更多相关文章

  1. 阿里播放器踩坑记录 进度条重构 video loadByUrl失效解决方案

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 文档地址:https://player.alicdn.com/aliplayer/index. ...

  2. html5 vedio 播放器,禁掉进度条快进快退事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. ckplayer,超酷网页播放器,用于集成在网站中的播放器

    自己在工作中做了一个教学网站,点击左边课程,右边播放视频,经过源代码分析,用的就是这个播放器 网址:http://www.ckplayer.com/ 具体使用播放器网站上说的比较明白 div id=& ...

  4. 腾讯X5内核使用详解(X5内核播放器使用如何去除控制栏全屏播放)以及一些注意事项

    例子下载地址 https://www.lanzous.com/i2zsv5g      GIT就不用了麻烦的不行 本人安卓刚学 就上X5内核弄了老长时间由于对maven 和idea不熟悉刚开始导包都是 ...

  5. Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条(未待解决完问题)

    效果: 问题:可拖动进度条随进度条移动时,会致使音乐卡顿(待解决) xml <?xml version="1.0" encoding="utf-8"?&g ...

  6. 从零开始学 Web 之 HTML5(四)拖拽接口,Web存储,自定义播放器

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  7. Java利用VLC开发简易视屏播放器

    1.环境配置 (1)下载VLC  VlC官网http://www.videolan.org/    各个版本的下载地址http://download.videolan.org/pub/videolan ...

  8. 如何用vue打造一个移动端音乐播放器

    写在前面 没错,这就是慕课网上的那个vue音乐播放器,后台是某音乐播放器的线上接口扒取,虽然这类项目写的人很多,但不得不说这还是个少有的适合vue提升的好项目,做这个项目除了想写一个比较大并且功能复杂 ...

  9. iOS开发拓展篇—音频处理(音乐播放器3)

    iOS开发拓展篇—音频处理(音乐播放器3) 说明:这篇文章主要介绍音频工具类和播放工具类的封装. 一.控制器间数据传递 1.两个控制器之间数据的传递 第一种方法:self.parentViewCont ...

随机推荐

  1. GOTO Berlin: Web API设计原则

    在邮件列表和讨论区中有很多与REST和Web API相关的讨论,下面仅是我个人对这些问题的一些见解,并没有绝对的真理,InnoQ的首席顾问Oliver Wolf在GOTO Berlin大会上开始自己的 ...

  2. SQL SERVER全面优化-------索引有多重要?

    想了好久索引的重要性应该怎么写?讲原理结构?我估计大部分人不愿意看,也不愿意花那么多时间仔细研究.光写应用?感觉不明白原理一样不会用.举例说明?情况太多也写不全....到底该怎么写呢? 随便写吧,想到 ...

  3. Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏

    一.预备知识—对象的”生“与”死“ (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的“指 ...

  4. [Voice communications] 声音的滤波

    本系列文章主要是介绍 Web Audio API 的相关知识,以及 web语音通信 中会遇到的一些问题,阐述可能存在错误,还请多多斧正! 通过设备获取音频流会不可避免的渗入一些杂音,这些杂音可能来自你 ...

  5. A Beginner's Guide to Paxos

    Google Drive: A Beginner's Guide to Paxos The code ideas of Paxos protocol: 1) Optimistic concurrenc ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明

    前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...

  7. <canvas>drawImage()方法无法显示图片

    在书上看到用<canvas>绘制图像就动手试试,刚开始,我的代码是这样的: <!DOCTYPE html> <html> <head> <meta ...

  8. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx

    Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...

  9. easyui-combobox实现省-市-区县级联菜单

    省:<input id="sheng" class="easyui-combobox" style="width:100px" dat ...

  10. react-native 简述

    1. RN 是什么 2. RN 与传统Hybrid框架相比的优势 3. RN的优势 4. RN的劣势 5. RN开发重点关注的问题 1 RN是什么 2 RN 与传统Hybrid框架相比的优势 传统的如 ...