RSS
热门关键字:  性福人生  生化危机  虚拟人生  o ice  秘密潜入1

Silverlight:拖动滚动条控制媒体播放

来源: 作者:wangergo 时间:2008-04-14 Tag: 点击:

  本打算写完MediaPlay控件的拖动滚动条来控制媒体播放的功能,可惜在这里卡壳了。我的拖放进度条的效果总是不理想,至到今晚上看到一段视频--DRAG AND DROP FUNCTIONALITY IN 1.1才发现自己只不过少写了一行代码。

  


Position = (left/totalLength)*NaturalDuration


   // 点下鼠标左键

void  TimeThumb_MouseLeftButtonDown( object  sender, MouseEventArgs e)
{
   ((System.Windows.Media.Visual)sender).CaptureMouse();
// 捕获鼠标

    
this .timelinePointStart  =  e.GetPosition(Parent  as  UIElement).X; // 获取鼠标的x坐标轴
             
    TimeLinedrag 
=   true ; // 标识拖放操作开始 
 
                
 }
 


// 移动鼠标
    void  TimeThumb_MouseMove( object  sender, MouseEventArgs e)
  
{
     
if  (TimeLinedrag)
     
{
        timelinePoinxEnd 
=  e.GetPosition(Parent  as  UIElement).X;
        Double delta 
=  timelinePoinxEnd  -  timelinePointStart;
                      
        
double  left  =  ( double )TimeThumb.GetValue(Canvas.LeftProperty);

       timelinePointStart 
=  timelinePoinxEnd; // 我就是掉了这段代码
                       
       
this .TimeThumb.SetValue( Canvas.LeftProperty, left + delta);
                      
       }

        
   }


// 放开鼠标左键
  void  TimeThumb_MouseLeftButtonUp( object  sender, MouseEventArgs e)
        
{
     
            TimeLinedrag 
=   false ;
            
           
this .videoWindow.Pause(); // 暂停播放
            
            
double  left  = ( double )TimeThumb.GetValue(Canvas.LeftProperty);
            
            
double  rate  =  left / ( this .TimeSlider.Width  - this .TimeThumb.Width);  // 视频拖放到新位置在整个播放进度的比率
            
            
long   ticks  =  Convert.ToInt64(rate  *   this .videoWindow.NaturalDuration.TimeSpan.Ticks);
            
            
this .videoWindow.Position = new  TimeSpan(ticks);
           
            
this .videoWindow.Play();
            
            ((System.Windows.Media.Visual)sender).ReleaseMouseCapture();
        }

1

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册