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

     

       

    

  1.      Timer timerSlide = null;
  2.  
  3. //当前初始化的PictureBox
  4. PictureBox box = null;
  5. //当前PictureBox
  6. PictureBox curBox = null;
  7. //下一个PictureBox
  8. PictureBox nxtBox = null;
  9. //前进方向
  10. string direction = "";
  11. //当前图片的索引
  12. int curIdx = 0;
  13.  
  14. //Panel1的宽度
  15. int width = 0;
  16. //当前图片x的坐标
  17. int curXPos = 0;
  18.  
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. }
  23.  
  24. private void Form1_Load(object sender, EventArgs e)
  25. {
  26. Init();
  27. }
  28.  
  29. private void Init()
  30. {
  31. width = splitContainer1.Panel1.Width;
  32.  
  33. timerSlide = new Timer();
  34. timerSlide.Interval = 100;
  35. timerSlide.Tick += timerSlide_Tick;
  36. timerSlide.Enabled = false;
  37.  
  38. //初始化Panel1
  39. box = new PictureBox();
  40. box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
  41. box.SizeMode = PictureBoxSizeMode.StretchImage;
  42. box.Image = imageListContainer.Images[0];
  43. splitContainer1.Panel1.Controls.Clear();
  44. splitContainer1.Panel1.Controls.Add(box);
  45.  
  46. curBox = box;
  47. }
  48.  
  49. private void timerSlide_Tick(object sender, EventArgs e)
  50. {
  51. if (direction.Equals("right"))
  52. {
  53. splitContainer1.Panel1.Controls.Clear();
  54. splitContainer1.Panel1.Controls.Add(curBox);
  55. splitContainer1.Panel1.Controls.Add(nxtBox);
  56. curBox.Location = new Point(curXPos, 0);
  57. nxtBox.Location = new Point(width + curXPos, 0);
  58. if (Math.Abs(curXPos) == width)
  59. {
  60. curXPos = 0;
  61. timerSlide.Enabled = false;
  62. curBox = nxtBox;
  63. }
  64. curXPos -= 30;
  65. }
  66. else if (direction.Equals("left"))
  67. {
  68. splitContainer1.Panel1.Controls.Clear();
  69. splitContainer1.Panel1.Controls.Add(curBox);
  70. splitContainer1.Panel1.Controls.Add(nxtBox);
  71. curBox.Location = new Point(curXPos, 0);
  72. nxtBox.Location = new Point(curXPos - width, 0);
  73. if (curXPos == width)
  74. {
  75. curXPos = 0;
  76. timerSlide.Enabled = false;
  77. curBox = nxtBox;
  78. }
  79. curXPos += 30;
  80. }
  81. else
  82. {
  83. timerSlide.Enabled = false;
  84. return;
  85. }
  86.  
  87. //timerSlide.Enabled = false;
  88. }
  89.  
  90. private void lbLeft_Click(object sender, EventArgs e)
  91. {
  92. if (curIdx == 0)
  93. {
  94. curIdx = imageListContainer.Images.Count - 1;
  95.  
  96. box = new PictureBox();
  97. box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
  98. box.SizeMode = PictureBoxSizeMode.StretchImage;
  99. box.Image = imageListContainer.Images[curIdx];
  100. splitContainer1.Panel1.Controls.Clear();
  101. //splitContainer1.Panel1.Controls.Add(box1);
  102.  
  103. //curIdx = imageListContainer.Images.Count - 1;
  104. }
  105. else
  106. {
  107. curIdx -= 1;
  108.  
  109. box = new PictureBox();
  110. box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
  111. box.SizeMode = PictureBoxSizeMode.StretchImage;
  112. box.Image = imageListContainer.Images[curIdx];
  113. splitContainer1.Panel1.Controls.Clear();
  114. //splitContainer1.Panel1.Controls.Add(box1);
  115.  
  116. //curIdx -= 1;
  117. }
  118. direction = "left";
  119. nxtBox = box;
  120. //启动定时器
  121. timerSlide.Enabled = true;
  122. }
  123.  
  124. private void lbRight_Click(object sender, EventArgs e)
  125. {
  126. if (curIdx == imageListContainer.Images.Count - 1)
  127. {
  128. curIdx = 0;
  129.  
  130. box = new PictureBox();
  131. box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
  132. box.SizeMode = PictureBoxSizeMode.StretchImage;
  133. box.Image = imageListContainer.Images[curIdx];
  134. splitContainer1.Panel1.Controls.Clear();
  135. //splitContainer1.Panel1.Controls.Add(box2);
  136.  
  137. //curIdx = 0;
  138. }
  139. else
  140. {
  141. curIdx += 1;
  142.  
  143. box = new PictureBox();
  144. box.Size = new Size(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height);
  145. box.SizeMode = PictureBoxSizeMode.StretchImage;
  146. box.Image = imageListContainer.Images[curIdx];
  147. splitContainer1.Panel1.Controls.Clear();
  148. //splitContainer1.Panel1.Controls.Add(box2);
  149.  
  150. //curIdx += 1;
  151. }
  152. direction = "right";
  153. nxtBox = box;
  154. //启动定时器
  155. timerSlide.Enabled = true;
  156. }

  

winform实现图片的滑动效果的更多相关文章

  1. Android进阶:ListView性能优化异步加载图片 使滑动效果流畅

    ListView 是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很 ...

  2. Android实现左右滑动效果

    本示例演示在Android中实现图片左右滑动效果.   关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现.接下来 ...

  3. Android 实现左右滑动效果ViewFlipper终结【转】

    本示例演示在Android中实现图片左右滑动效果.   关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现.接下来 ...

  4. Flexslider图片轮播、文字图片相结合滑动切换效果

    Flexslider是一款基于的jQuery内容滚动插件.它能让你轻松的创建内容滚动的效果,具有非常高的可定制性.开发者可以使用Flexslider轻松创建各种图片轮播效果.焦点图效果.图文混排滚动效 ...

  5. 《JavaScript 实战》:实现图片幻滑动展示效果

    滑动展示效果主要用在图片或信息的滑动展示,也可以设置一下做成简单的口风琴(Accordion)效果.这个其实就是以前写的图片滑动展示效果的改进版,那是我第一篇比较受关注的文章,是时候整理一下了. 有如 ...

  6. 仿优酷Android客户端图片左右滑动(自动滑动)

    最终效果: 页面布局main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...

  7. 十六、Android 滑动效果汇总

    Android 滑动效果入门篇(一)—— ViewFlipper Android 滑动效果入门篇(二)—— Gallery Android 滑动效果基础篇(三)—— Gallery仿图像集浏览 And ...

  8. Android 滑动效果进阶篇(六)—— 倒影效果

    上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘 ...

  9. Android 滑动效果入门篇(二)—— Gallery

    Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果. 从上面的继承关系可以看出,AbsSpinner类继承自AdapterView,因此我 ...

随机推荐

  1. dedecms 模板文件不存在,无法解析文档的终极各种解决办法

    dedecms 模板文件不存在,无法解析文档"的终极各种解决办法 方法一:[此对应喜欢把模板文件使用".html"的格式,] /include/arc.archives. ...

  2. h5的复制功能的使用,Clipboard.js的使用,主要是在app里面使用

    app中使用,框架用的是vue.js 1.显示要下载这个Clipboard.js插件 package-lock.json里面 "clipboard-polyfill": { &qu ...

  3. spring boot validation参数校验

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. Spring Boot自身对数据在服务端的校验有一个比较好的支持,它能将 ...

  4. 第06组 Beta冲刺(4/4)

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11990575.html 作业博客 : https://edu.cnblogs.com/campus/ ...

  5. 关于资源获取(请把https改为http)

    所有demo以及资源获取,请把https改为http.

  6. Springboot单元测试Junit深度实践

    Springboot单元测试Junit深度实践 前言 单元测试的好处估计大家也都知道了,但是大家可以发现在国内IT公司中真正推行单测的很少很少,一些大厂大部分也只是在核心产品推广单测来保障质量,今天这 ...

  7. 性能测试分析过程(二)cpu 使用率过高的分析方法

    Linux 系统下 cpu 使用率过高的分析方法 1.通过 top 命令可以很明显查看出哪个进程耗cpu比较高 2. ps -mp 25147-o THREAD,tid,time\top -Hp pi ...

  8. flask 开发用户登录注册功能

    flask 开发用户登录注册功能 flask开发过程议案需要四个模块:html页面模板.form表单.db数据库操作.app视图函数 1.主程序 # app.py # Auther: hhh5460 ...

  9. ai segmentation

    不只是医学图像啊,自然图像分割用unet也能取得非常好的效果.搞过kaggle语义分割的比赛carvana.感觉最好用的还是unet,其次linknet和提拉米苏也好用.large kernel也不错 ...

  10. Python之schedule用法,类似linux下的crontab

    # -*- coding: utf-8 -*- # author:baoshan import schedule import time def job(): print("I'm work ...