群里的小伙伴问起了如何用labview去实现截屏?那么就去实现一下咯。
关于截屏这里主要讨论三个方面:
1. 纯粹的截取某个vi的前面板
2. 截取整个电脑桌面
3. 截取指定的矩形区域
1. 截取vi前面板
这个需求很简单,只需调用vi的 fp.get image 方法就可以获取前面板的图像数据了,然后将其写入到图片文件中,如下图所示:
2. 截取整个桌面
这个需求也不难,都知道键盘上有一个截屏按键“prtsc”,按下该键就可以截取整个桌面并将图像数据保存到剪贴板中,那么我们只用模拟按下该按键并从剪贴板中读取图像数据将其保存到文件中即可。
查阅资料发现可以使用 user32.dll库中的 keybd_event() 函数,如下图所示:
其中提到该函数已经被取代,推荐使用sendinput函数(感兴趣的自行尝试),这里演示keybd_event函数来解决。
第一个参数需要指定虚拟密钥代码,这里需用用到 打印屏幕键prtsc,如下图所示:
第二个参数是密钥的硬件扫码代码,一般置为0,感兴趣可自行搜索不同按键对应的硬件扫码码,比如'a'~'z'如下图所示,当键按下时产生make码,当按键释放时产生break码。
第三个参数一般为0或2,0表示按下,2表示释放;
第四个参数是与按键关联的一些附加值,一般也为0;
以上参数详细内容感兴趣请自行搜索深入了解,模拟 prtsc 按键按下实现如下图所示:
接下来从剪贴板中读取图像数据并保存到文件中即可:调用application的clipboard.get image方法获取图像数据,然后再调用 write png file.vi写入文件 (当然这里也可以写入其它格式文件中,如jpg,bmp等),如下图所示:
上述功能也可以通过.net(system.windows.forms.clipboard和system.drawing.imaging.imageformat)来实现如下图所示:
个也就很简单了,只需对图像数据做个简单处理即可(draw flattened pixmap.vi 和 picture to pixmap.vi),如下图所示
3. 截取指定矩形区域
截取整个桌面搞定了,这个也就很简单了,只需对图像数据做个简单处理即可(draw flattened pixmap.vi 和 picture to pixmap.vi),如下图所示:
OPPO R17 Pro开启夜拍手机的2.0时代
基于有限状态机[8]的DSR路由表项设计实现方法
浅谈工业以太网串口网关ES-301A的典型应用
美国研究人员开发出了一种由3D打印的刚性机器人
土壤温度湿度测试仪的产品介绍
关于LabVIEW如何实现截屏
IPSec增强原理过程—L2TP over IPSec
电蜂分享HSL-USB连接器插头不通电的原因
多房间音频解决方案能够让你聆听到每一个节拍
惠普战66Pro高色域版商务笔记本评测 虽是商务本但都有点入门游戏本的味道了
鼎阳科技全面助力2017年全国大学生电子设计竞赛
赛普拉斯扩展低功耗蓝牙产品线用于多领域
喜报!小匠物联获评2023年度浙江省省工业设计企业!
美国联邦通信委员会将推迟对5G网络部署的设备批准
设备连接器的改进解决方案
对计算应用的典型同步降压调节器负载设计规范
土壤墒情与旱情监测系统介绍
浙大生完成脑机接口15000小时人体植入和实验
广和通携手阿加犀、轮趣科技“智”见2023世界机器人大会
嘉兴海棠电子告诉你六类网线为什么一般需要十字骨架结构