群里的小伙伴問(wèn)起了如何用LabVIEW去實(shí)現(xiàn)截屏?那么就去實(shí)現(xiàn)一下咯。
關(guān)于截屏這里主要討論三個(gè)方面:
1. 純粹的截取某個(gè)VI的前面板
2. 截取整個(gè)電腦桌面
3. 截取指定的矩形區(qū)域
1. 截取VI前面板
這個(gè)需求很簡(jiǎn)單,只需調(diào)用VI的 FP.Get Image 方法就可以獲取前面板的圖像數(shù)據(jù)了,然后將其寫(xiě)入到圖片文件中,如下圖所示:
2. 截取整個(gè)桌面
這個(gè)需求也不難,都知道鍵盤(pán)上有一個(gè)截屏按鍵“PrtSc”,按下該鍵就可以截取整個(gè)桌面并將圖像數(shù)據(jù)保存到剪貼板中,那么我們只用模擬按下該按鍵并從剪貼板中讀取圖像數(shù)據(jù)將其保存到文件中即可。
查閱資料發(fā)現(xiàn)可以使用 User32.dll庫(kù)中的 keybd_event() 函數(shù),如下圖所示:
其中提到該函數(shù)已經(jīng)被取代,推薦使用SendInput函數(shù)(感興趣的自行嘗試),這里演示keybd_event函數(shù)來(lái)解決。
第一個(gè)參數(shù)需要指定虛擬密鑰代碼,這里需用用到 打印屏幕鍵PrtSc,如下圖所示:
第二個(gè)參數(shù)是密鑰的硬件掃碼代碼,一般置為0,感興趣可自行搜索不同按鍵對(duì)應(yīng)的硬件掃碼碼,比如'A'~'Z'如下圖所示,當(dāng)鍵按下時(shí)產(chǎn)生Make碼,當(dāng)按鍵釋放時(shí)產(chǎn)生Break碼。
第三個(gè)參數(shù)一般為0或2,0表示按下,2表示釋放;
第四個(gè)參數(shù)是與按鍵關(guān)聯(lián)的一些附加值,一般也為0;
以上參數(shù)詳細(xì)內(nèi)容感興趣請(qǐng)自行搜索深入了解,模擬 PrtSc 按鍵按下實(shí)現(xiàn)如下圖所示:
接下來(lái)從剪貼板中讀取圖像數(shù)據(jù)并保存到文件中即可:調(diào)用Application的Clipboard.Get Image方法獲取圖像數(shù)據(jù),然后再調(diào)用 Write PNG File.vi寫(xiě)入文件 (當(dāng)然這里也可以寫(xiě)入其它格式文件中,如jpg,bmp等),如下圖所示:
上述功能也可以通過(guò).net(System.Windows.Forms.Clipboard和System.Drawing.Imaging.ImageFormat)來(lái)實(shí)現(xiàn)如下圖所示:
個(gè)也就很簡(jiǎn)單了,只需對(duì)圖像數(shù)據(jù)做個(gè)簡(jiǎn)單處理即可(Draw Flattened Pixmap.vi 和 Picture to Pixmap.vi),如下圖所示
3. 截取指定矩形區(qū)域
截取整個(gè)桌面搞定了,這個(gè)也就很簡(jiǎn)單了,只需對(duì)圖像數(shù)據(jù)做個(gè)簡(jiǎn)單處理即可(Draw Flattened Pixmap.vi 和 Picture to Pixmap.vi),如下圖所示:
審核編輯:湯梓紅
-
LabVIEW
+關(guān)注
關(guān)注
1970文章
3654瀏覽量
323267 -
截屏
+關(guān)注
關(guān)注
0文章
11瀏覽量
8715 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62569
原文標(biāo)題:關(guān)于LabVIEW如何實(shí)現(xiàn)截屏
文章出處:【微信號(hào):LabVIEW QT 修煉之路,微信公眾號(hào):LabVIEW QT 修煉之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論