走马灯图片轮播控件----------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 。
重写方法如下
公开方法如下
新增类如下
新增属性如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现