freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

一種基于網(wǎng)格方法控制光標(biāo)定位的解決方案計算機(jī)語音人機(jī)交互研究畢業(yè)論文(編輯修改稿)

2025-05-29 08:56 本頁面
 

【文章內(nèi)容簡介】 3 21 6 5 4 9 8 7 7 (a).33半透明網(wǎng)格覆蓋全屏幕 (b).語音輸入5后透明網(wǎng)格縮小到5號位置 。 。遞歸縮小直至精確到指定位置 (c).語音再次輸入4后進(jìn)行一次遞歸操作 網(wǎng)格法過程實現(xiàn)示意圖3 網(wǎng)格法控制光標(biāo)定位程序設(shè)計與實現(xiàn) 網(wǎng)格法光標(biāo)定位程序開發(fā)目標(biāo)語音光標(biāo)控制的目的是要用語音命令來完成物理鼠標(biāo)的功能,即語音控制光標(biāo)的移動、單擊、雙擊、右擊等功能。從目前我們?nèi)送ㄟ^用手使用物理鼠標(biāo)控制計算機(jī)來看,在物理鼠標(biāo)的作用下,我們?nèi)四芑究刂朴嬎銠C(jī)來完成相應(yīng)操作而為人類服務(wù)。物理鼠標(biāo)是用手來操作的,而這對于殘疾人來講是無法實現(xiàn)的,同時,在很多特定場合下,人們在操作計算機(jī)的過程中雙手同時還要完成其他操作(如飛行員在飛機(jī)駕駛過程中)而無法用手同時來操作鼠標(biāo),這就使得用語音控制鼠標(biāo)變得十分有用。網(wǎng)格法光標(biāo)定位程序同其他語音光標(biāo)控制方法一樣都是要實現(xiàn)語音對鼠標(biāo)的控制,使得我們可以拋棄物理鼠標(biāo)來控制計算機(jī)。在語音控制鼠標(biāo)的過程中,光標(biāo)的定位是關(guān)鍵所在,因為Windows系統(tǒng)是把計算機(jī)命令變成顯示器屏幕上坐標(biāo)的位置,例如:各種菜單、標(biāo)簽、按鈕等,當(dāng)光標(biāo)對準(zhǔn)這個位置時,就是對準(zhǔn)了這道計算機(jī)命令,計算機(jī)執(zhí)行的始終是光標(biāo)所對準(zhǔn)的命令。因此只要能實現(xiàn)光標(biāo)在計算機(jī)屏幕的任意位置移動就能執(zhí)行計算機(jī)的所有命令,這就使得在光標(biāo)控制中光標(biāo)定位變得意義十分重大。網(wǎng)格法同其他光標(biāo)定位方法相比最大的優(yōu)勢在于語音控制時執(zhí)行效率高,定位速度快,出錯率低等。 關(guān)鍵算法設(shè)計 Win32 API 介紹 Win32 API即為Microsoft 32位平臺的應(yīng)用程序編程接口(Application Programming Interface)。所有在Win32平臺上運行的應(yīng)用程序都可以調(diào)用這些函數(shù)。使用Win32 API,應(yīng)用程序可以充分挖掘Windows的32位操作系統(tǒng)的潛力。Mircrosoft的所有32位平臺都支持統(tǒng)一的API,包括函數(shù)、結(jié)構(gòu)、消息、宏及接口。使用 Win32 API不但可以開發(fā)出在各種平臺上都能成功運行的應(yīng)用程序,而且也可以充分利用每個平臺特有的功能和屬性。[9]以下是VB調(diào)用API函數(shù)使用說明。 聲明API函數(shù)  在VB中,不能直接調(diào)用API函數(shù),必須遵循“先聲明后使用”的原則,否則會出現(xiàn)“子程序或函數(shù)未定義”的錯誤信息?! PI函數(shù)的聲明要用到Declare語句,如果該API函數(shù)有返回值,則其聲明為Function,如果沒有返回值,可以將其聲明為Sub;  如果該API函數(shù)為多個窗體共用,則應(yīng)將其定義在模塊(Module)中,一般以Public開頭,如:Public Declare Function EnumWindows Lib user32 (ByVal lpEnumFunc As Long, ByVal lParam _As Long) As Long;如果該API函數(shù)只為一個窗體使用,則可在該窗體的通用聲明中聲明,以Private開頭即可;  在Declare語句中,Lib關(guān)鍵字用來指明該API函數(shù)屬于哪個DLL,作用是告訴VB如何找到這個API。如果調(diào)用的DLL庫文件屬于Windows的核心庫(USer3Kernel3GDI32)。例如,;  在Declare語句中,Alias關(guān)鍵字用來指明API函數(shù)的別名。如果我們定義的函數(shù)名稱與實際的API函數(shù)不同名時,就要在Alias關(guān)鍵字后寫明API的真正名稱,而且必須區(qū)分大小寫;如果定義的函數(shù)名稱與實際的API函數(shù)名相同時,可以省略Alias關(guān)鍵字;  VB以地址方式傳遞參數(shù)(只傳遞數(shù)據(jù)的地址,不傳遞實際的參數(shù)值),而許多API要求以值傳遞方式傳遞參數(shù)(需實際的數(shù)據(jù))。如果調(diào)用的API函數(shù)以值傳遞,則需在參數(shù)聲明前加上ByVal關(guān)鍵字?! ~@取API函數(shù)  在VB中,(\winapi目錄下)。我們可以利用VB的“API瀏覽器”(API Viewer)來聲明:  (IDE)的“外接程序”菜單下的“外接程序管理器”;  在“外接程序管理器”對話框中找到“VB6 API Viewer”項,在“加載行為”欄勾選“在啟動時加載”或“加載/卸載”復(fù)選框,再按下“確定”按鈕;  單擊“API瀏覽器”項,系統(tǒng)會彈出“API瀏覽器”對話框;  打開“API瀏覽器”的“文件”菜單下的“加載文本文件”,選擇“”,在“API類型”列表框中選擇“聲明”,然后輸入我們要查找的API函數(shù)的開頭幾個字母(這里我們輸入“GetDi”)。此時,在“選定項”欄將出現(xiàn)詳細(xì)的該函數(shù)聲明。我們單擊“復(fù)制”按鈕就可把它復(fù)制到剪貼板中,然后回到VB系統(tǒng)中,按Ctrl+V即可把該函數(shù)聲明粘貼到程序的代碼窗口中?! ≌{(diào)用API函數(shù)  我們以一個實例“如何獲取磁盤的總空間和剩余空間”來說明。計算磁盤容量的公式為:每扇區(qū)的字節(jié)數(shù)每一簇的扇區(qū)數(shù)簇數(shù),單位為字節(jié)(Byte)。這里用到一個“GetDiskFreeSpace”的API函數(shù)。該函數(shù)的功能為:提取指定磁盤的自由空間信息。該函數(shù)的參數(shù)有:  lpRootPathName:驅(qū)動器根目錄,正確寫法為“C:\”,不能寫成“C:”或“C”?! ?lpSectorsPerCluster:每簇的扇區(qū)數(shù)?! ?lpBytesPerSector:每扇區(qū)的字節(jié)數(shù)。   lpNumberOfFreeClusters:可用的簇數(shù)?!? lpTtoalNumberOfClusters :總簇數(shù)?! 『瘮?shù)返回值如果不等于0表示成功,否則表示失敗。 半透明網(wǎng)格窗體設(shè)計與實現(xiàn)在VB中實現(xiàn)半透明窗體必須調(diào)用API函數(shù),這類API函數(shù)能改變窗體的屬性使得窗體變半成透明狀。對于VB中半透明窗體的實現(xiàn)必須調(diào)用 SetLayeredWindowAttributes 函數(shù),因此必須對該函數(shù)進(jìn)行申明和參數(shù)設(shè)置。Public Declare Function SetLayeredWindowAttributes Lib user32 (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long //函數(shù)申明,hWnd是透明窗體的句柄,crKey為掩碼的顏色,可以用RGB(r,g,b)來指定。bAlpha是不透明度,取值范圍是(0,255),其中0代表全透明,255代表不透明?! wFlags是透明方式,可以取兩個值:  當(dāng)取值為LWA_ALPHA時,crKey參數(shù)無效,bAlpha參數(shù)有效;  當(dāng)取值為LWA_COLORKEY時,窗體中的所有顏色為crKey的地方將變?yōu)橥该?,bAlpha參數(shù)無效?! WA_ALPHA = 0x2  LWA_COLORKEY=0x1  也可以取兩個值的組合:LWA_ALPHA Or LWA_COLORKEY。這樣crKey的地方將變?yōu)槿该?,而其它地方根?jù)bAlpha參數(shù)確定透明度。要使使窗體擁有透明效果,首先要有WS_EX_LAYERED擴(kuò)展屬性,方法:  先聲明GetWindowLong和SetWindowLong。   Private Declare Function SetWindowLong Lib user32 Alias SetWindowLongA (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long // 改變指定窗口的屬性 Private Declare Function SetLayeredWindowAttributes Lib user32 (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long //獲取指定窗口的屬性 Const LWA_COLORKEY = amp。H1 Const LWA_ALPHA = amp。H2 Const GWL_EXSTYLE = (20) Const WS_EX_LAYERED = amp。H80000 Const WS_EX_TRANSPARENT As Long = amp。H20amp。Dim Ret As Long Ret=GetWindowLong(,GWL_EXSTYLE) Ret= Ret Or WS_EX_LAYERED Or WS_EX_TRANSPARENT SetWindowLong , GWL_EXSTYLE, Ret SetLayeredWindowAttributes , 0, 90, LWA_ALPHA //透明度設(shè)置為902 . 33網(wǎng)格實現(xiàn)透明窗體實現(xiàn)后就要在該半透明窗體上畫33網(wǎng)格,而網(wǎng)格是通過在窗體上畫直線來實現(xiàn)(在窗體水平方向和垂直方向劃直線),這里用到VB中的畫直線的line 函數(shù),即在窗體水平方向按平均三等分劃四條直線,垂直方向同理。Public Function Grid() = vbRed //設(shè)置網(wǎng)格線條顏色 = 2 //設(shè)置網(wǎng)格線條粗細(xì) Dim HLINESNUM As Integer Dim WLINESNUM As Integer Dim XX As Integer Dim I As Integer Dim J As Integer Dim YY As Integer HLINESNUM = 3 //控制畫直線的條數(shù) WLINESNUM = 3 //控制畫直線的條數(shù) = True //窗體刷新后自動重新畫線 XX = Int( / WLINESNUM) YY = Int( / HLINESNUM) For I = 1 To HLINESNUM + 1 (XX * I, 0)(XX * I, 1) //水平方向畫線 (0, YY * I)( 1, YY * I) //垂直方向畫線 Next End Function 半透明33網(wǎng)格窗體完全覆蓋計算機(jī)屏幕效果圖 網(wǎng)格識別算法設(shè)計在網(wǎng)格法中最關(guān)鍵的是要實現(xiàn)網(wǎng)格的識別,即在語音輸入1~9數(shù)字時半透明窗體能縮小至數(shù)字序號所在區(qū)域,“五“時全屏覆蓋的半透明窗體就會縮小到5號區(qū)域并能繼續(xù)網(wǎng)格劃分。 這里每執(zhí)行一次,窗體就會縮小, 窗體的縮小是在區(qū)域序號(1~9)的識別后進(jìn)行的,也就是先識別序號,再完成窗體縮小。這里就可以將1~9九個數(shù)字作為輸入?yún)?shù),而網(wǎng)格識別就是有這九個數(shù)字來決定的。于是建立九個數(shù)字和數(shù)字對應(yīng)的序號區(qū)域位置之間的關(guān)系成為解決網(wǎng)格識別的突破口。 在VB中窗體的位置是由窗體的Left和Top的屬性值來決定的,Top屬性是對窗體的相對垂直高度,Left屬性是對窗體的相對水平距離,相當(dāng)于平面直角坐標(biāo)系中的y軸和x軸。 窗體相對屏幕坐標(biāo)系位置圖計算機(jī)屏幕 TopLeft 縮小后網(wǎng)格透明窗體 3 21 6 5 4 9 8 7(a). 33半透明網(wǎng)格全覆蓋屏幕 (b). 選擇5后半透明窗體縮小到該區(qū)域 網(wǎng)格識別窗體位置與屏幕關(guān)系圖通過觀表圖33總結(jié)規(guī)律可知,網(wǎng)格序號和Top值、Left值之間有一定邏輯關(guān)系,而將Top值和Left值相對屏幕位置關(guān)系通過表格形式列出后,這種規(guī)律更加明顯,有以下表31可很好概括和總結(jié)規(guī)律。用VB語法將這其中邏輯關(guān)系表示為:bleft = / 3 btop = / 3 m = (n 1) \ 3 //m為(n1)與3的商取整,其中n為網(wǎng)格序號k=((n 1) Mod 3) //k為(n1)與3求模后的余數(shù)部分,其中n為網(wǎng)格序號 =k* bleft //網(wǎng)格識別后窗體Left的值 = m * btop //網(wǎng)格識別后窗體Top的值表31 網(wǎng)格序號與Top值和Left值一覽表網(wǎng)格序號Top值(單位為1/3 height)Left值(單位為 1/3 width)1 0 0 2 0 13
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1