实例说明
该实例的软件运行界面如下图所示:
软件支持三种常用的图片文件格式,分别为bmp、jpg和png格式。另外,当选择某个图片文件时,也支持显示当前文件夹下的其它图片文件。在软件界面上包括以下控件元素:
“图片”控件:用来显示浏览的图片内容
“打开”按钮:选择要浏览的图片文件
“前一张”和“后一张”按钮:选择当前目录下的前一张或后一张图片
编程思路
主程序采用循环结构+选择结构+事件结构的框架形式,使用状态机机制,整个程序包括两个运行状态,分别是默认状态和加载文件状态。
默认状态的作用是,在事件结构中响应用户的操作,如用户选择打开、前一张、后一张操作等,在相应的事件分支中分别处理,处理完成后会跳转到加载文件状态。
加载文件状态的作用是,实现选中图片文件的加载显示,处理完成后,跳转到默认状态,等待用户新的操作。
下面给出程序两个状态机制下的主要实现代码。
默认状态下实现代码
程序开始运行时,在存储运行状态的移位寄存器中初始值(枚举常数)设为“默认处理”,程序进入到事件结构中,在该结构中,处理打开、前一张、后一张三个按钮的“值改变”事件及“前面板关闭?”事件。
1、“打开”值改变事件代码
当用户点击“打开”按钮时,弹出文件对话框(限定格式为jpg、bmp和png格式)选择打开的图片文件,并遍历当前文件夹下所有的图片文件,输出一个图片数组,将该数组及当前文件在数组中的索引值传递到两个移位寄存器中,供加载文件时调用,程序框图如下所示:
2、“前一张”和“后一张”值改变事件代码
在这两个值改变事件中,其目的是改变当前即将浏览的图片在图片数组中的索引值,当选择“前一张”时,索引值变为当前索引值减1,当选择“后一张”时,索引值变为当前索引值加1,只是要注意的是,其改变后的索引值不要小于0或大于图片数组个数的最大值。该事件事件分支处理完成后,跳转到“加载文件”状态。由于两者代码类似,这儿仅给出“前一张”值改变事件的程序框图,代码如下所示:
3、“前面板关闭?”事件代码
当点击前面板右上角的关闭按钮时,实现退出程序的功能,其实现代码如下图所示:
加载文件状态下实现代码
在这种状态下实现图片文件的具体解析及显示功能,根据文件后缀判断当前图片文件的类型,分别调用LabVIEW内置的图片读取函数实现图像数据的读取,最后绘制到图片控件中。同时,使用属性节点函数更改当前窗口的标题,将当前浏览的图片文件名称显示到标题中。该状态处理完成后,跳转到“默认状态”,等待用户新的操作。实现代码如下图所示:
总结
该例子相对来说有些难度,但能够很好的帮助我们理解LabVIEW中的一些基本编程思想,如状态机机制、while循环与事件结构的框架结构等。涉及到的知识点还包括了图片处理函数、移位寄存器、属性节点的使用等。
领取专属 10元无门槛券
私享最新 技术干货