本打算写完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();
}

