当前位置:网站首页>LabVIEW中如何实现任意形状的不规则按键
LabVIEW中如何实现任意形状的不规则按键
2022-08-05 05:41:00 【LabVIEW开发】
LabVIEW中如何实现任意形状的不规则按键
在C#等其他编程语言实现的程序中,我们经常可以看到各种非矩形的不规则按键,而LabVIEW中的自定义控件只能够实现不规则的外观,而按键行为响应范围依然是矩形的,对于UI界面要求较高的用户,自定义控件往往无法满足用户的需求,那么LabVIEW中是否可以实现任意形状的不规则按键呢?
解答: 可以很确定的是,LabVIEW中是可以实现任意形状的不规则控件的。
实际上,LabVIEW中的圆形指示灯本身就是一个典型的非矩形控件。如下图,注意,点击圆形之外的区域控件是没有任何响应的,只有鼠标点击圆形内部的区域,指示灯才会改变状态。
添加图片注释,不超过 140 字(可选)
那么我们该如何实现这样的圆形按键呢,甚至是任意形状的不规则按键呢?
下面我们以Simon游戏中的按键为例(如下图),一步步讲解如何在LabVIEW中实现不规则按键。
编辑
添加图片注释,不超过 140 字(可选)
1.首先,我们必须通过图像处理软件制作好带透明通道的按键图片,图片可以保存成32位的PNG格式的图像,注意不要保存成BMP格式的图片,否则透明通道无效。下图是两张已经处理好的PNG格式的按键图片。注意,经过处理后,两张图片虽是矩形,但是按键以外的部分是透明的,即图像数据的alpha通道值为255。
编辑
添加图片注释,不超过 140 字(可选)
2.其次,我们需要将这两张图片做成自定义按键,自定义控件的制作比较简单,这里不再赘述。
3.最后,我们需要该自定义控件实现不规则按键的功能,即:鼠标点击透明区域控件不响应,只有当鼠标点击不透明的按键区域,控件才改变相应的状态。这样的功能我们可以考虑用鼠标按下过滤事件来实现。即在鼠标按下时判断鼠标当前位置的控件的颜色是否为透明色,若是则放弃该事件,否则响应该事件。
编辑
添加图片注释,不超过 140 字(可选)
以上我们已经通过过滤事件实现了在运行状态下的不规则按键的功能,下面我们把这个按键封装成XControl以便后续调用。
在XControl中,我们将上述过滤事件中的代码封装成一个子VI,并添加一个“鼠标按下?”过滤事件,最终代码如下图。注意其中编辑状态和运行状态、输入控件和显示控件、鼠标左键单击和鼠标右键单击的区别以及相应的处理代码。
编辑
添加图片注释,不超过 140 字(可选)
XControl设计完成后,其代码可以复用,对于第2步中已经做好的任意形状的不规则控件,只需把XControl中外观VI的前面板上的控件替换掉并将新控件匹配窗格,然后把新的XControl添加进自己的项目内即可。注意,本例中的XControl仅适用于机械动作为“单击时转换”的按键。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
上文中提到的例子和资料,均在word中的附件里,可点击下载。进一步了解,可联系我们。
边栏推荐
猜你喜欢
Transformer详细解读与预测实例记录
如何将.asd恢复为Word文档
Tips for formatting code indentation
Nacos集群搭建
input detailed file upload
LaTeX uses frame to make PPT pictures without labels
Collision, character controller, Cloth components (cloth), joints in the Unity physics engine
LeetCode刷题记录(2)
ALC experiment
numpy.random usage documentation
随机推荐
reduce()方法的学习和整理
单片机期末复习大题
LaTeX使用frame制作PPT图片没有标号
Writing OpenCV in VSCode
网络排错基础-学习笔记
The 25 best free games on mobile in 2020
农场游戏果园系统+牧场养殖系统+广告联盟模式流量主游戏小程序APP V1
防抖函数和节流函数
LaTeX uses frame to make PPT pictures without labels
ES2020新特性
Cocos Creator Mini Game Case "Stick Soldier"
滚动条问题,未解决
图像处理、分析与机器视觉一书纠错笔记
Come, come, let you understand how Cocos Creator reads and writes JSON files
边缘盒子+时序数据库,美的数字化平台 iBUILDING 背后的技术选型
【5】Docker中部署MySQL
el-autocomplete use
小程序input框不允许输入负数
DevOps - Understanding Learning
Passing parameters in multiple threads