10.1 本打算写完MediaPlay控件的拖动滚动条来控制媒体播放的功能,可惜在这里卡壳了。我的拖放进度条的效果总是不理想,至到今晚上看到一段视频--DRAG AND DROP FUNCTIONALITY IN SILVERLIGHT 1.1才发现自己只不过少写了一行代码。
     不过Mediaplay控件我不打算再写下去了,因为微软公司在ASPNETFutures组件包里提供了asp:media组件,这个组件可以用在silverlight页面里,功能比我写的要强大,还支持换肤。
     好了,如何通过拖动进度条来控制媒体播放呢?要用到silverlight里MediaElement的一个属性Position,它是一个timespan,设定它的值后就可以定位到你想要播放的时间点上。
    如果找进度条和 MediaElement 的Position之间的关系呢。我们看下面的图:
   拖动MediaPlay控件的滚动条来控制媒体播放--silverlight(银光)学习(4)
   | <--              left                   --> | currentPosition: x                           |
   |<------------------------------------totalLength------------------------->|    
  
    中间滚动条的位置left和滚动槽的总长度totalLength就对应着媒体播放当前时间点Position和媒体播放完所要的总时间NaturalDuration.
    再讲一个知识点:获取所播放的媒体的总播放时间用MediaElement的NaturalDuration属性。
   所以我们可以用这样的公式来表示:  
   Position = (left/totalLength)*NaturalDuration

     好了,解决了一个技术点,那么更重要的一个技术点是如何拖动滚动条呢?这涉及到三个鼠标事件:
 MouseLeftButtonDown,MouseMove,MouseLeftButtonUp.也就是说当你用鼠标拖放一个东西的时候,首先要按下鼠标
左键,然后拖放,拖放到指定的位置后就放开鼠标左键,从程序角度上讲这三个事件就先后发生了。
     拖放的时候还要注意的一点是:为了捕获鼠标,我们要用到CaptureMouse()方法,放开鼠标左键的时候我们要释放鼠标ReleaseMouseCapture();
     核心代码如下:
  
拖动MediaPlay控件的滚动条来控制媒体播放--silverlight(银光)学习(4)//点下鼠标左键
拖动MediaPlay控件的滚动条来控制媒体播放--silverlight(银光)学习(4)

拖动MediaPlay控件的滚动条来控制媒体播放--silverlight(银光)学习(4)
void TimeThumb_MouseLeftButtonDown(object sender, MouseEventArgs e)
        }

   源代码下载:/Files/wangergo/MediaPlayControlDrag.rar

相关文章:

  • 2022-12-23
  • 2021-09-08
  • 2021-10-07
  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-18
  • 2021-06-17
相关资源
相似解决方案