WPF自动浏览

因为图片轮巡功能中需要实现一个图片自动浏览,循环播放,就是类似与小说中自动阅读效果。如图:

图片自动浏览

第一步,在主页面加一个自动浏览的按钮,就是一个下拉框,实现自动浏览的开启和关闭。加个选择点击事件:

        /// <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;
        }

最后一步,关注我。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值