|
最近在搞單片機(jī)編程,需要用到TFT彩屏,實(shí)現(xiàn)GUI界面,常規(guī)的操作有二個(gè):一、用第三方的GUI軟件編輯界面,然后移植他們的庫(kù);
二、自己寫(xiě)庫(kù),實(shí)現(xiàn)點(diǎn)陣圖、文字、彩圖、畫(huà)直線、畫(huà)圓、圓矩形等功能,在第三方圖形軟件里編輯好界面,然后獲取坐標(biāo)位置、大小,在自己的MCU程序一個(gè)個(gè)指令生成對(duì)應(yīng)的界面;
先說(shuō)下這二種操作的優(yōu)缺點(diǎn):第一種用第三方庫(kù),比較簡(jiǎn)便,移植需要先研究庫(kù),一般庫(kù)功能比較全面,有些功能用不上,因此會(huì)浪費(fèi)比較多程序空間;
第二種方法要自己寫(xiě)庫(kù),第一次寫(xiě)比較花時(shí)間,第二次就簡(jiǎn)單多了。界面不太好編輯處理,每改動(dòng)一個(gè)坐標(biāo)就要在程序里更新,重新編譯,感覺(jué)非常不方便,也花時(shí)間。
于是,我在想,如果我設(shè)計(jì)一款軟件,功能如下:
一、支持點(diǎn)陣圖、文字、彩圖、畫(huà)直線、畫(huà)圓、圓矩形等繪圖,所見(jiàn)即所得,而且每個(gè)元件可以隨時(shí)單獨(dú)編輯和移動(dòng)位置;
二、支持不同屏幕大小設(shè)置、縮放功能;
三、支持單色屏、16色彩屏、24色彩屏;
四、支持多個(gè)畫(huà)面編輯,比如畫(huà)面一、畫(huà)面二......
五、支持點(diǎn)陣文字取模、單圖圖片取模、彩色圖片取模,輸出C或TXT文本,也支持輸出二進(jìn)制文件;
六、支第三方取模的數(shù)據(jù),并顯示出來(lái)
七、支持自定義多個(gè)元件組合成一個(gè)元件,做成模板,在界面里復(fù)用。(比如你用一個(gè)圓加單色圖文,做成一個(gè)選項(xiàng)的按鈕模板。。。)
八、支持每個(gè)元件自定義函數(shù)格式,然后排版過(guò)程自動(dòng)把這個(gè)函數(shù)生成列表,可以自動(dòng)替換函數(shù)里的坐標(biāo)、大小、顏色等參數(shù),把真實(shí)的值填入;
前面1-7項(xiàng)的功能主要是方便編輯GUI界面,第8個(gè)功能非常關(guān)鍵,因?yàn)榭梢宰远x函數(shù)格式,跟你自寫(xiě)的庫(kù)的函數(shù)對(duì)應(yīng)起來(lái),實(shí)現(xiàn)把生成的函數(shù)列表復(fù)制到你的MCU程序里,即可顯示一模一樣的屏幕畫(huà)面。
為了方便大家的理解,舉個(gè)例子:我要畫(huà)一條直線和一個(gè)圓,在軟件編輯好了,位置大小,并設(shè)置直線元件的自定義指令為DrawLine([X1], [Y1], [X2], [Y2], [FC]);//畫(huà)直線 ,也設(shè)置了圓形元件的自定義指令為DrawCircle([X], [Y],[R],[FC], [TM]);//畫(huà)圓 TM=[TM]: 0空心 1填充,這樣,我隨便移動(dòng)兩個(gè)元件的位置,最終會(huì)生成具有實(shí)際數(shù)據(jù)的指令:
DrawCircle(8, 8,5,0xF810, 0);//畫(huà)圓 TM=0: 0空心 1填充,
DrawLine(1, 27, 159, 27, 0x07FF);//畫(huà)直線
指令的先后順序跟兩個(gè)元件的先后順序有關(guān),頂層的元件指令在后面。
這樣,我只要在MCU里程序也實(shí)現(xiàn)了對(duì)應(yīng)的方法,就可以把生成的指令復(fù)制過(guò)去,真正運(yùn)行起來(lái)了。當(dāng)然,如果是點(diǎn)陣或圖片,你要先取模好數(shù)據(jù),在程序加入變量?jī)?chǔ)存。。。。。
有了這個(gè)軟件,搞GUI界面就方便多了,保存的數(shù)據(jù)內(nèi)容和實(shí)現(xiàn)的庫(kù)都是自己控制,占有空間比較少,而且有DIY的樂(lè)趣,您需要嗎?
我計(jì)劃近期開(kāi)始編寫(xiě)這個(gè)軟件,會(huì)經(jīng)常發(fā)布我的進(jìn)度和實(shí)現(xiàn)的編程思路,大家可以跟貼發(fā)意見(jiàn)
|
評(píng)分
-
查看全部評(píng)分
|