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