电子说
群里的小伙伴问起了如何用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),如下图所示:
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !