最近在搞单片机编程,需要用到TFT彩屏,实现GUI界面,常规的操作有二个:一、用第三方的GUI软件编辑界面,然后移植他们的库;
二、自己写库,实现点阵图、文字、彩图、画直线、画圆、圆矩形等功能,在第三方图形软件里编辑好界面,然后获取坐标位置、大小,在自己的MCU程序一个个指令生成对应的界面;
先说下这二种操作的优缺点:第一种用第三方库,比较简便,移植需要先研究库,一般库功能比较全面,有些功能用不上,因此会浪费比较多程序空间;
第二种方法要自己写库,第一次写比较花时间,第二次就简单多了。界面不太好编辑处理,每改动一个坐标就要在程序里更新,重新编译,感觉非常不方便,也花时间。
于是,我在想,如果我设计一款软件,功能如下:
一、支持点阵图、文字、彩图、画直线、画圆、圆矩形等绘图,所见即所得,而且每个元件可以随时单独编辑和移动位置;
二、支持不同屏幕大小设置、缩放功能;
三、支持单色屏、16色彩屏、24色彩屏;
四、支持多个画面编辑,比如画面一、画面二......
五、支持点阵文字取模、单图图片取模、彩色图片取模,输出C或TXT文本,也支持输出二进制文件;
六、支第三方取模的数据,并显示出来
七、支持自定义多个元件组合成一个元件,做成模板,在界面里复用。(比如你用一个圆加单色图文,做成一个选项的按钮模板。。。)
八、支持每个元件自定义函数格式,然后排版过程自动把这个函数生成列表,可以自动替换函数里的坐标、大小、颜色等参数,把真实的值填入;
前面1-7项的功能主要是方便编辑GUI界面,第8个功能非常关键,因为可以自定义函数格式,跟你自写的库的函数对应起来,实现把生成的函数列表复制到你的MCU程序里,即可显示一模一样的屏幕画面。
为了方便大家的理解,举个例子:我要画一条直线和一个圆,在软件编辑好了,位置大小,并设置直线元件的自定义指令为DrawLine([X1], [Y1], [X2], [Y2], [FC]);//画直线 ,也设置了圆形元件的自定义指令为DrawCircle([X], [Y],[R],[FC], [TM]);//画圆 TM=[TM]: 0空心 1填充,这样,我随便移动两个元件的位置,最终会生成具有实际数据的指令:
DrawCircle(8, 8,5,0xF810, 0);//画圆 TM=0: 0空心 1填充,
DrawLine(1, 27, 159, 27, 0x07FF);//画直线
指令的先后顺序跟两个元件的先后顺序有关,顶层的元件指令在后面。
这样,我只要在MCU里程序也实现了对应的方法,就可以把生成的指令复制过去,真正运行起来了。当然,如果是点阵或图片,你要先取模好数据,在程序加入变量储存。。。。。
有了这个软件,搞GUI界面就方便多了,保存的数据内容和实现的库都是自己控制,占有空间比较少,而且有DIY的乐趣,您需要吗?
我计划近期开始编写这个软件,会经常发布我的进度和实现的编程思路,大家可以跟贴发意见
|