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