wpf滑块在移动的同时改变大小

问题描述

| 我正在使用滑块来显示在中介元素中播放的视频文件的进度。我每200毫秒用一个计时器更新拇指的位置。我还使用一个快进/快退按钮来更改滑块的位置,该按钮可以更改中介元素的位置。 问题是在播放中介元素时或当我使用前进/后退按钮时,拇指的大小会发生变化。它变厚然后再次变薄,这是重复的。我该如何解决? 在这里,我上传了一个视频,该视频显示了拇指的奇怪行为 http://v7.tinypic.com/player.swf?file=2mw6xhx&s=7 这是代码: xaml中的滑块
<Slider Name=\"sliderPosition\" 
        Width=\"220\" 
        Margin=\"2\" 
        ValueChanged=\"sliderPosition_ValueChanged\" 
        Thumb.DragStarted=\"sliderPosition_DragStarted\"
        Thumb.DragCompleted=\"sliderPosition_DragCompleted\" />
背后的代码
//initialization
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(200);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();


private void OnMediaOpened(object sender,RoutedEventArgs e)
{
    if (MediaElem.NaturalDuration.HasTimeSpan)
    {
    TimeSpan ts = TimeSpan.FromMilliseconds(MediaElem.NaturalDuration.TimeSpan.TotalMilliseconds * 0.95);

    sliderPosition.Maximum = ts.TotalSeconds;
    sliderPosition.SmallChange = 1;
    sliderPosition.LargeChange = Math.Min(10,ts.Seconds / 10);

    tbPosition.Text = String.Format(\"00:00:00\");
    tbDuration.Text = String.Format(\"{0:00}:{1:00}:{2:00}\",ts.Hours,ts.Minutes,ts.Seconds);
    }
}


private void MoveForward(int millisec)
{
    if ((MediaElem.Position.TotalMilliseconds + millisec) > (MediaElem.NaturalDuration.TimeSpan.TotalMilliseconds * 0.95))
    {
        MediaElem.Position = TimeSpan.FromMilliseconds(MediaElem.NaturalDuration.TimeSpan.TotalMilliseconds * 0.95);
    }
    else
    {
        MediaElem.Position = MediaElem.Position + TimeSpan.FromMilliseconds(millisec);
        sliderPosition.Value = MediaElem.Position.TotalSeconds;
    }
}


private void MoveBackward(int millisec)
{
    if ((MediaElem.Position - TimeSpan.FromMilliseconds(millisec)) < TimeSpan.FromMilliseconds(0))
    {
    MediaElem.Position = TimeSpan.FromMilliseconds(0);
    }
    else
    {
    MediaElem.Position = MediaElem.Position - TimeSpan.FromMilliseconds(millisec);
    sliderPosition.Value = MediaElem.Position.TotalSeconds;
    }
}


private void sliderPosition_ValueChanged(object sender,RoutedPropertyChangedEventArgs<double> e)
{
    TimeSpan ts = TimeSpan.FromSeconds(e.NewValue);
    tbPosition.Text = String.Format(\"{0:00}:{1:00}:{2:00}\",ts.Seconds);
    MediaElem.Position = ts;
}


private void sliderPosition_DragStarted(object sender,DragStartedEventArgs e)
{
    isDragging = true;
}


private void sliderPosition_DragCompleted(object sender,DragCompletedEventArgs e)
{
    isDragging = false;
    MediaElem.Position = TimeSpan.FromSeconds(sliderPosition.Value);
}


void timer_Tick(object sender,EventArgs e)
{
    if (!isDragging && isPlaying)
    {
    sliderPosition.Value = MediaElem.Position.TotalSeconds;
    }
}
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)