码迷,mamicode.com
首页 > Windows程序 > 详细

winform实现图片的滑动效果

时间:2019-09-27 18:50:53      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:oid   controls   init   pos   技术   math   png   tar   cli   

      使用winform实现图片的滑动效果(类似网站首页图片滑动切换效果),结果实现了,但是效果其实不是很理想。
也许有更好的方法。


       
      技术图片

       技术图片

    技术图片

 

 

     Timer timerSlide = null;

        //当前初始化的PictureBox
        PictureBox box = null;
        //当前PictureBox
        PictureBox curBox = null;
        //下一个PictureBox
        PictureBox nxtBox = null;
        //前进方向
        string direction = "";
        //当前图片的索引
        int curIdx = 0;

        //Panel1的宽度
        int width = 0;
        //当前图片x的坐标
        int curXPos = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Init();
        }

        private void Init()
        {
            width = splitContainer1.Panel1.Width;

            timerSlide = new Timer();
            timerSlide.Interval = 100;
            timerSlide.Tick += timerSlide_Tick;
            timerSlide.Enabled = false;

            //初始化Panel1
            box = new PictureBox();
            box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
            box.SizeMode = PictureBoxSizeMode.StretchImage;
            box.Image = imageListContainer.Images[0];
            splitContainer1.Panel1.Controls.Clear();
            splitContainer1.Panel1.Controls.Add(box);

            curBox = box;
        }

        private void timerSlide_Tick(object sender, EventArgs e)
        {
            if (direction.Equals("right"))
            {
                splitContainer1.Panel1.Controls.Clear();
                splitContainer1.Panel1.Controls.Add(curBox);
                splitContainer1.Panel1.Controls.Add(nxtBox);
                curBox.Location = new Point(curXPos, 0);
                nxtBox.Location = new Point(width + curXPos, 0);
                if (Math.Abs(curXPos) == width)
                {
                    curXPos = 0;
                    timerSlide.Enabled = false;
                    curBox = nxtBox;
                }
                curXPos -= 30;
            }
            else if (direction.Equals("left"))
            {
                splitContainer1.Panel1.Controls.Clear();
                splitContainer1.Panel1.Controls.Add(curBox);
                splitContainer1.Panel1.Controls.Add(nxtBox);
                curBox.Location = new Point(curXPos, 0);
                nxtBox.Location = new Point(curXPos - width, 0);
                if (curXPos == width)
                {
                    curXPos = 0;
                    timerSlide.Enabled = false;
                    curBox = nxtBox;
                }
                curXPos += 30;
            }
            else
            {
                timerSlide.Enabled = false;
                return;
            }

            //timerSlide.Enabled = false;
        }

        private void lbLeft_Click(object sender, EventArgs e)
        {
            if (curIdx == 0)
            {
                curIdx = imageListContainer.Images.Count - 1;

                box = new PictureBox();
                box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
                box.SizeMode = PictureBoxSizeMode.StretchImage;
                box.Image = imageListContainer.Images[curIdx];
                splitContainer1.Panel1.Controls.Clear();
                //splitContainer1.Panel1.Controls.Add(box1);

                //curIdx = imageListContainer.Images.Count - 1;
            }
            else
            {
                curIdx -= 1;

                box = new PictureBox();
                box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
                box.SizeMode = PictureBoxSizeMode.StretchImage;
                box.Image = imageListContainer.Images[curIdx];
                splitContainer1.Panel1.Controls.Clear();
                //splitContainer1.Panel1.Controls.Add(box1);

                //curIdx -= 1;
            }
            direction = "left";
            nxtBox = box;
            //启动定时器
            timerSlide.Enabled = true;
        }

        private void lbRight_Click(object sender, EventArgs e)
        {
            if (curIdx == imageListContainer.Images.Count - 1)
            {
                curIdx = 0;

                box = new PictureBox();
                box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
                box.SizeMode = PictureBoxSizeMode.StretchImage;
                box.Image = imageListContainer.Images[curIdx];
                splitContainer1.Panel1.Controls.Clear();
                //splitContainer1.Panel1.Controls.Add(box2);

                //curIdx = 0;
            }
            else
            {
                curIdx += 1;

                box = new PictureBox();
                box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
                box.SizeMode = PictureBoxSizeMode.StretchImage;
                box.Image = imageListContainer.Images[curIdx];
                splitContainer1.Panel1.Controls.Clear();
                //splitContainer1.Panel1.Controls.Add(box2);

                //curIdx += 1;
            }
            direction = "right";
            nxtBox = box;
            //启动定时器
            timerSlide.Enabled = true;
        }

  

winform实现图片的滑动效果

标签:oid   controls   init   pos   技术   math   png   tar   cli   

原文地址:https://www.cnblogs.com/lu-yuan/p/11599538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!