用silverlight设计MediaPlay控件

用silverlight设计MediaPlay控件,第1张

概述来源:it168   大家都知道silverlight里用了获得艾美奖的新的视频编解码技术。视频质量无论从移动设备还是桌面浏览器都可以达到720p HDTV video模式。如果能用silverlight技术设计一个视频网站估计客户体验很不错的。   那我们就开始做一个最简单的MediaPlayer控件,能动态的传入视频的URI参数,还能控制视频的播放。   在上次我们建的silverlight控 来源:it168   大家都知道silverlight里用了获得艾美奖的新的视频编解码技术。视频质量无论从移动设备还是桌面浏览器都可以达到720p HDTV vIDeo模式。如果能用silverlight技术设计一个视频网站估计客户体验很不错的。   那我们就开始做一个最简单的MediaPlayer控件,能动态的传入视频的URI参数,还能控制视频的播放。   在上次我们建的silverlight控件类库项目里添加一个新的silverlight控件----MediaPlayControl.xaml.   做一个媒体播放器,难就难在界面设计上。如果要设计的简陋话,只需要在xaml文件里放上一个MediaElement和几个TextBlock就可以了,不过这样实在太丑陋了。我就用了Microsoft Expression Encoder 里面媒体播放器的界面,效果如下:   中间带摄像机图标的就是MediaElement ,几个按钮是由Canvas组成的。代码过长,请下载该文件 /files/wangergo/MediaPlayControl.rar   那么如何控制视频的播放呢,这主要跟MediaElement有关系。   MediaElement有一个重要的属性是Source,它是指所要播放的媒体文件的Uri,也就是媒体文件的地址。  还有几个重要方法:Pause--暂停播放,Play--播放,Stop--停止. xaml文件对应的.cs文件代码如下: 1/**//// <summary> 2 /// Desc:媒体播放器控件 3 /// Author:williams 4 /// Date:2007-9-27 5 /// </summary> 6 public class MediaPlayControl : Control 7 { 8 9 私有变量#region 私有变量 10 private FrameworkElement parentControl; 11 private Canvas timeline; 12 private Canvas playbutton; 13 private Canvas pausebutton; 14 private Canvas stopbutton; 15 private MediaElement vIDeoWindow; 16 private string mediaUrl=""; 17 #endregion 18 19 公有属性#region 公有属性 20 public string MediaUrl 21 { 22  get{return this.mediaUrl; } 23  set 24  { 25   this.mediaUrl = value; 26  Uri url = new Uri(this.mediaUrl,UriKind.relative); 27  this.vIDeoWindow.source = url; 28 } 29 } 30 #endregion 31 32 构造函数#region 构造函数 33  public MediaPlayControl() 34  { 35   System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("SilverControls.MediaPlayControl.xaml"); 36  parentControl = this.InitializefromXaml(new System.IO.StreamReader(s).ReadToEnd()); 37  this.playbutton = parentControl.Findname("Playbutton") as Canvas; 38  this.pausebutton = parentControl.Findname("Pausebutton") as Canvas; 39  this.stopbutton = parentControl.Findname("Stopbutton") as Canvas; 40  this.vIDeoWindow = parentControl.Findname("VIDeoWindow") as MediaElement; 41 42  this.playbutton.MouseleftbuttonUp += new MouseEventHandler(playbutton_MouseleftbuttonUp); 43  this.stopbutton.MouseleftbuttonUp += new MouseEventHandler(stopbutton_MouseleftbuttonUp); 44  this.pausebutton.MouseleftbuttonUp += new MouseEventHandler(pausebutton_MouseleftbuttonUp); 45 46 } 47 48  voID pausebutton_MouseleftbuttonUp(object sender,MouseEventArgs e) 49 { 50 this.vIDeoWindow.Pause(); 51 } 52 53  voID stopbutton_MouseleftbuttonUp(object sender,MouseEventArgs e) 54 { 55 this.vIDeoWindow.Stop(); 56 } 57 58  voID playbutton_MouseleftbuttonUp(object sender,MouseEventArgs e) 59 { 60 this.Play(); 61 } 62 #endregion 63 64  公有方法#region 公有方法 65 public voID Play() 66 { 67 if(this.mediaUrl!=string.Empty) 68 { 69 70 this.vIDeoWindow.Play(); 71 } 72 } 73 #endregion 74 }   然后我们在上次建的silverlight项目里的page.xaml.cs文件的page_loaded事件里调用我们做的控件。 1 public voID Page_Loaded(object o,EventArgs e) 2 { 3 // required to initialize variables 4 InitializeComponent(); 5 6 double top = 100; 7 8 double left = 20; 9 10 MediaPlayControl media = new MediaPlayControl(); 11 12 media.MediaUrl = "wow.wmv"; 13 14 media.SetValue<double>(Canvas.topProperty,top); 15 16 media.SetValue<double>(Canvas.leftProperty,left); 17 18 this.Children.Add(media); 19}  总结

以上是内存溢出为你收集整理的用silverlight设计MediaPlay控件全部内容,希望文章能够帮你解决用silverlight设计MediaPlay控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1059901.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存