群里的小伙伴問起了如何用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),如下圖所示:
審核編輯:湯梓紅
-
LabVIEW
+關注
關注
1970文章
3654瀏覽量
323305 -
截屏
+關注
關注
0文章
11瀏覽量
8715 -
函數
+關注
關注
3文章
4327瀏覽量
62569
原文標題:關于LabVIEW如何實現截屏
文章出處:【微信號:LabVIEW QT 修煉之路,微信公眾號:LabVIEW QT 修煉之路】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論