LabVIEW中如何实现任意形状的不规则按键

简介: LabVIEW中如何实现任意形状的不规则按键

LabVIEW中如何实现任意形状的不规则按键


在C#等其他编程语言实现的程序中,我们经常可以看到各种非矩形的不规则按键,而LabVIEW中的自定义控件只能够实现不规则的外观,而按键行为响应范围依然是矩形的,对于UI界面要求较高的用户,自定义控件往往无法满足用户的需求,那么LabVIEW中是否可以实现任意形状的不规则按键呢?


解答: 可以很确定的是,LabVIEW中是可以实现任意形状的不规则控件的。


实际上,LabVIEW中的圆形指示灯本身就是一个典型的非矩形控件。如下图,注意,点击圆形之外的区域控件是没有任何响应的,只有鼠标点击圆形内部的区域,指示灯才会改变状态。

61de7cacd6de9fc9d9151381814fee2f.png

添加图片注释,不超过 140 字(可选)

那么我们该如何实现这样的圆形按键呢,甚至是任意形状的不规则按键呢?

下面我们以Simon游戏中的按键为例(如下图),一步步讲解如何在LabVIEW中实现不规则按键。

编辑


添加图片注释,不超过 140 字(可选)


1.首先,我们必须通过图像处理软件制作好带透明通道的按键图片,图片可以保存成32位的PNG格式的图像,注意不要保存成BMP格式的图片,否则透明通道无效。下图是两张已经处理好的PNG格式的按键图片。注意,经过处理后,两张图片虽是矩形,但是按键以外的部分是透明的,即图像数据的alpha通道值为255。

a41d8e289157d621dc38a304368167e2.png

编辑


添加图片注释,不超过 140 字(可选)


2.其次,我们需要将这两张图片做成自定义按键,自定义控件的制作比较简单,这里不再赘述。


3.最后,我们需要该自定义控件实现不规则按键的功能,即:鼠标点击透明区域控件不响应,只有当鼠标点击不透明的按键区域,控件才改变相应的状态。这样的功能我们可以考虑用鼠标按下过滤事件来实现。即在鼠标按下时判断鼠标当前位置的控件的颜色是否为透明色,若是则放弃该事件,否则响应该事件。

c466d04d2a28d6882cc8517673a86419.png

编辑


添加图片注释,不超过 140 字(可选)


以上我们已经通过过滤事件实现了在运行状态下的不规则按键的功能,下面我们把这个按键封装成XControl以便后续调用。


在XControl中,我们将上述过滤事件中的代码封装成一个子VI,并添加一个“鼠标按下?”过滤事件,最终代码如下图。注意其中编辑状态和运行状态、输入控件和显示控件、鼠标左键单击和鼠标右键单击的区别以及相应的处理代码。

e3a564f2c39342f94bc03d80d67d9f6e.png

编辑


添加图片注释,不超过 140 字(可选)


XControl设计完成后,其代码可以复用,对于第2步中已经做好的任意形状的不规则控件,只需把XControl中外观VI的前面板上的控件替换掉并将新控件匹配窗格,然后把新的XControl添加进自己的项目内即可。注意,本例中的XControl仅适用于机械动作为“单击时转换”的按键。


LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序


上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系我们。

相关文章
|
6月前
|
计算机视觉
图像处理之给定任意四点不规则放缩
图像处理之给定任意四点不规则放缩
31 3
|
7月前
|
算法
LabVIEW在同一个面板下描绘模拟波形和数字波形
LabVIEW在同一个面板下描绘模拟波形和数字波形
53 0
|
7月前
LabVIEW中不同颜色连线的含义
LabVIEW中不同颜色连线的含义
144 2
|
7月前
LabVIEW当鼠标悬停在图形曲线上时显示坐标
LabVIEW当鼠标悬停在图形曲线上时显示坐标
96 1
|
7月前
LabVIEW通过编程将图形类控件的X轴显示为时间戳
LabVIEW通过编程将图形类控件的X轴显示为时间戳
64 0
|
前端开发 JavaScript
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
【Three.js入门】渲染第一个场景及物体(轨道控制器、坐标轴辅助器、移动缩放旋转)
301 0
|
并行计算 前端开发 数据可视化
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
197 0
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
|
算法
算法练习——(5)输出图形
算法练习——(5)输出图形
103 0
|
计算机视觉
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)