基于MiniGUI的數(shù)字加密電話系統(tǒng)GUI設(shè)計(jì)
1.3 用戶界面設(shè)計(jì)
數(shù)字加密電話系統(tǒng)需要顯示當(dāng)前的系統(tǒng)狀態(tài)和具體內(nèi)容,以此進(jìn)行系統(tǒng)與用戶之間的信息交流,因此對界面的穩(wěn)定性和實(shí)時(shí)性要求較高。本系統(tǒng)將整個(gè)屏幕分為3個(gè)區(qū)域,即狀態(tài)區(qū)域、Logo與時(shí)間顯示區(qū)域和主顯示區(qū)域,如圖2所示。狀態(tài)顯示區(qū)主要表示當(dāng)前系統(tǒng)的工作狀
態(tài)和設(shè)備的狀態(tài)。比如是掛機(jī)態(tài)還是摘機(jī)態(tài),是加密還是非加密態(tài),是否插入U(xiǎn)盤,當(dāng)前的數(shù)據(jù)傳輸率為多少等。不同的狀態(tài)需要用不同的圖片來顯示。從一個(gè)狀態(tài)過渡到另一個(gè)狀態(tài),需要用一個(gè)動(dòng)畫來表示。主顯示區(qū)域主要顯示表示當(dāng)前系統(tǒng)的工作情況的動(dòng)畫或文字提示。比如表示普通語音電話的動(dòng)畫、表示正在加密傳輸?shù)膭?dòng)畫,也可以顯示其他信息,如系統(tǒng)功能選擇界面、選文件界面、日志管理界面等。Logo及時(shí)間顯示區(qū)顯示公司的Logo與當(dāng)前系統(tǒng)時(shí)間。對于本系統(tǒng)的界面設(shè)計(jì)來說,最重要的是各種動(dòng)畫的顯示要流暢。本文引用地址:http://www.ex-cimer.com/article/150319.htm
2 實(shí)現(xiàn)GUI時(shí)存在的兩個(gè)問題
本系統(tǒng)GUI的實(shí)現(xiàn)問題主要是各種圖片的顯示、動(dòng)畫和選擇功能界面的實(shí)現(xiàn)。圖片的顯示方法很簡單,因此,在下面只介紹動(dòng)畫和選擇功能界面的實(shí)現(xiàn)方法及存在的問題。
2.1 動(dòng)畫的實(shí)現(xiàn)方法及存在的問題
MiniGUI為實(shí)現(xiàn)動(dòng)畫,已提供了animation控件,用animation控件實(shí)現(xiàn)動(dòng)畫的過程非常簡單:
①準(zhǔn)備動(dòng)畫文件,文件格式應(yīng)該是GIF格式,GIF格式的動(dòng)畫文件可以用Flash和PhotoShop生成。
②用函數(shù)CreateAnimationFromGIF89aFile()讀入GIF文件。
③用CreateWindow()創(chuàng)建動(dòng)畫顯示窗口。
④用SendMessage()函數(shù)控制動(dòng)畫,該函數(shù)的第2個(gè)參數(shù)為ANM_STARTPLAY表示啟動(dòng)動(dòng)畫,參數(shù)為ANM_PLAYSTOP表示暫停動(dòng)畫。也可以用函數(shù)SendMessage(GetDlgItem(hInitface,IDC_MAINANIMATION),ANM_SETANIMATION,0,(LPARAM)anim)實(shí)現(xiàn)更換動(dòng)畫文件。但是,在嵌入式環(huán)境下,使用該方法播放動(dòng)畫時(shí),在狀態(tài)顯示區(qū)和主顯示區(qū)內(nèi)都產(chǎn)生嚴(yán)重的抖動(dòng)現(xiàn)象。而且屏幕越大抖動(dòng)就越明顯,分辨率為480×640時(shí)的抖動(dòng)現(xiàn)象比240×320時(shí)更明顯。減少動(dòng)畫的幀數(shù)或延長每一幀的播放時(shí)間,抖動(dòng)仍然存在,嚴(yán)重影響屏幕的顯示效果。
2.2 功能選擇界面的實(shí)現(xiàn)及存在的問題
功能選擇界面一般由多個(gè)圖片來組成,各表示不同的系統(tǒng)功能,用上下左右鍵選擇不同的功能,按Enter鍵運(yùn)行相應(yīng)程序,即打開另一個(gè)窗口,完成相應(yīng)功能。當(dāng)關(guān)閉窗口時(shí)重新顯示功能顯示界面。為區(qū)別被選中功能和未選中功能,放大或下沉顯示當(dāng)前被選中的功能圖片,而前一個(gè)被選中功能圖片恢復(fù)成原來的大小,如圖3所示。每次用上下左右鍵選擇功能時(shí)和關(guān)閉功能窗口時(shí),都要重新刷新背景,并重繪窗口客戶區(qū)的各個(gè)圖片。因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/MiniGUI">MiniGUI不保存被覆蓋區(qū)域的內(nèi)容,因此在MSG_PAINT消息中需要重繪的內(nèi)容較多,重繪圖片的常用方法是用FillB-oxWithBitmap()函數(shù)填充相應(yīng)圖片區(qū)域,但是這種方法加重了屏幕刷新負(fù)載,引起屏幕明顯地閃爍。
評論