走马灯图片轮播控件----------WinForm控件开发系列
该控件继承 Control 基类开发的。功能包括为设置图片框数量、使用导航按钮手动切换图片。
控件的播放原理在动画播放前计算好要播放特图片的信息。动画过程是利用定时器更新图片的信息。
控件播放界面显示的图片可以是一张或多张,每次移动只有一张滑动方的方向一共有四种。
有些人会看到 Images 属性的类型是自定义 ImageItemCollection ,而 ImageItemCollection 是继承 IList, ICollection, IEnumerable 的,就会觉得为什么这里不用 List 类型集合。这是有原因的,这是为了能让控件在VS IDE设计窗口使用。我们必须要按照.NET IDE控件开发模式来开发。如果你不按照.NET IDE控件开发模式来开发,你的控件在设计器窗口会报很多错的。如果这个控件只是用纯代码的方式去调用的话你用 List 类型集合去开发是没有错的。下面以 Images 属性为例子:
首先你要知道利用VS IDE设计器开发时有很多代码都是由VS IDE设计器自动生成的,假如 Images 属性是用 List 类型,那你在 Images.Add()后VS IDE设计器是无法立即更新界面。因为Add 方法里面没有要处理你的控件的一些逻辑代码。但利用 ImageItemCollection 就不一样了,因为 ImageItemCollection 是继承 IList, ICollection, IEnumerable,你可以在 Add 方法里面编写你需要的逻辑。
还有一方面就是在VS IDE设计器模式下你操作 Images 属性时如果 Images 是 List 集合类型的话是会报错的。
通过 ImageFrameCount 属性可以设置图片框的数量。
通过 Images 集合可以添加图片。每一个图片选项包括以下属性
这里有一个 Enable 的属性,这个属性的用途可以控制图片是否在播放列表中。因为把图片添加到 Images 集合并不代表图片处于播放列表中。就是说我添加图片,但我迟点再设置它可以播放。
它的播放原理
imageFrameList 里面的图片索引并不是 Images 的索引,而是通过 enableImageList 的简介索引去 Images 找到真实的图片索引。
通过 EnableImageCurrentIndex 属性可以设置当前已经播放到的图片索引,但这个索引是指 enableImageList 的索引,这个索引对应的图片框和 Orientation 属性有关。
Orientation 属性值为 LeftToRight 时当前索引指向的图片框为右边第一个;
Orientation 属性值为 RightToLeft 时当前索引指向的图片框为左边第一个;
Orientation 属性值为 TopToBottom 时当前索引指向的图片框为底部第一个;
Orientation 属性值为 BottomToTop 时当前索引指向的图片框为顶部第一个;
通过 NavigationBarShowType 属性设置导航栏的功能 。功能如下
可以通 Tab 键 让空间激活 同键盘的左右键可以对按钮进行切换,这时通过Enter、Space键可以进行图片的切换播放。通过键盘操作的条件是 NavigationBarShowType 属性值必须为 Normal 。
重写方法如下
公开方法如下
新增类如下
新增属性如下