版权声明:本文为博主原创文章,未经博主允许不得转载,如果你觉得有用的话,你可以收藏一下,或者评论一下,也可以关注下我,嘿嘿,你要是不听话,我的大刀可不是好玩的哈,想想心里都害怕,哼。快给我点个赞吧 https://blog.csdn.net/weixin_44446298/article/details/86230842
因为图片轮巡功能中需要实现一个图片自动浏览,循环播放,就是类似与小说中自动阅读效果。如图:
第一步,在主页面加一个自动浏览的按钮,就是一个下拉框,实现自动浏览的开启和关闭。加个选择点击事件:
/// <summary>
/// 自动浏览
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AutoGlaceOver_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (picTour.AutoGlaceOver.SelectionBoxItem == null)
{
return;
}
if ("开启".Equals(picTour.AutoGlaceOver.SelectionBoxItem.ToString()))
{
picTour.PictureTourControl01.timeNotice.Start();
picTour.PictureTourControl01.timerWoke();
}
else
{
picTour.PictureTourControl01.timeNotice.Stop();
}
}
第二步,在滚动条加个方法,来控制滚动条的滚动效果,记住,一定要另起一个线程,不然滚动就会有卡顿,停止等现象。
//定时器
public Timer timeNotice = new Timer();
//滚动条
private ScrollViewer scroll;
/// <summary>
/// 定时器设置
/// </summary>
public void timerWoke()
{
timeNotice.Elapsed += new ElapsedEventHandler(ScrollRolling);
timeNotice.Interval = 500;
}
/// <summary>
/// 滚动条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void ScrollRolling(object sender, ElapsedEventArgs e)
{
double oldVerticalOffset=this.scroll.VerticalOffset;
this.scroll.Dispatcher.Invoke(
new Action(
delegate
{
if (this.scroll.VerticalOffset<= (oldVerticalOffset))
{
scroll.ScrollToVerticalOffset(this.scroll.VerticalOffset + 10);
bool isFoot = IsVerticalScrollBarAtButtom(scroll);
if (isFoot)
{
scroll.ScrollToTop();
}
}
else
{
scroll.ScrollToVerticalOffset(this.scroll.VerticalOffset);
bool isFoot = IsVerticalScrollBarAtButtom(scroll);
if (isFoot)
{
//当滚动条到达底部过后,返回顶部
scroll.ScrollToTop();
}
}
}
)
);}
第三步,判断滚动条是否到达底部,从而实现循环滚动。
/// <summary>
/// 判断滚动条是否到达底部
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public bool IsVerticalScrollBarAtButtom(ScrollViewer s)
{
bool isAtButtom = false;
double dVer = s.VerticalOffset;
double dViewport = s.ViewportHeight;
double dExtent = s.ExtentHeight;
if (dVer != 0)
{
if (dVer + dViewport == dExtent)
{
isAtButtom = true;
}
else
{
isAtButtom = false;
}
}
else
{
isAtButtom = false;
}
if (s.VerticalScrollBarVisibility == ScrollBarVisibility.Disabled
|| s.VerticalScrollBarVisibility == ScrollBarVisibility.Hidden)
{
isAtButtom = true;
}
return isAtButtom;
}
最后一步,关注我。