3808|8

2002

帖子

24

TA的资源

五彩晶圆(高级)

楼主
 

【M4开发板Hanker试用狂-Shower.Xu】-3、简单计算器GUI界面 及换肤 [复制链接]

忙了几个晚上(白天赶项目加班)终于做了几个计算器界面出来,效果还行,但和当初自己设想的一个完整的计算器程序还相差甚远,没来得及加入触摸和算法,只有界面及换肤功能,暂时充当GUI部分的作业吧。我以后一定会补足,抱歉了...
写这个其实是受Demo程序的影响,但是用TI的库去做单一的项目会包含很多并不需要的东西,MCU时间和资源会有点浪费,但是它们确实好用。
本程序的大致流程是:在驱动屏幕的基础上,写两个文件,一个用来定义,创建和显示刷新按钮控件,一个用来定义,创建和显示刷新标签控件,由于只是个简单示例而且计算器的UI也很简单,所以两个控件的属性和方法都很少。
#define BUTTON_MAX_NUM 30

#define clFont WFONT_COLOR
#define clBtn WBACK_COLOR
////status位定义
//#define Enable 0x01 //使能
//#define Visable 0x02 //可见
//#define Refresh 0x04 //需要刷新
//#define Fouse 0x08 //当前焦点
//#define Ico 0x10 //是否使用图形
//#define Down 0x20 //按下状态
// 

typedef struct
{
  unsigned char id                              ; // 识别号
  unsigned int  x                               ; // 起始位置横坐标x
  unsigned int  y                               ; // 起始位置纵坐标y
  unsigned char width                           ; // 宽度
  unsigned char high                           ; // 高度
  unsigned char property                        ; // 属性
  unsigned short font_color ; // 文字颜色
  unsigned short button_color                ; // 按钮颜色
  unsigned char image_index ; // 按钮图像编号
  unsigned char status                          ; // 状态
  unsigned char caption[10]                              ; // 字符串
} BUTTON_DIG                                    ; // 按钮控件

extern BUTTON_DIG Btn_Dig[30];
extern unsigned char CreateButtonDig(BUTTON_DIG newbtn);
extern void Refresh_Btn_Dig(void);
extern void ButtonDig_SetRefresh(void);
其实就是两个结构体组,我只简单写了创建、刷新显示和设置刷新三个方法,只要初始化或设置好结构体的数据,创建并调用刷新就好了,如果需要改变,只要修改参数后重置status.Refresh位,就会在下次刷新检测时更新,可以每个按钮单独刷新,不会有太多的闪烁感。
//status位定义
#define Enable 0x01 //使能
#define Visable 0x02 //可见
#define Refresh 0x04 //需要刷新
#define Fouse 0x08 //当前焦点
#define Ico 0x10 //是否使用图形
#define Down 0x20 //按下状态
#define bReadOnly 0x40 
这两个控件支持位图,只需要把位图作为资源加载进去,设置status.Ico属性,并把位图指针放入unsigned char *btn_p0=btn00; unsigned char *btn_p1=btn10;里面就好了。
所以可以支持无图和位图两种模式
你可以在定时其中执行  
Refresh_Btn_Dig();
 Refresh_Label_Dig();
两个函数,如果一旦其中那个控件的status.Refresh为1需要刷新,就会更新它。
源程序下面附上,只要TI官方库按默认路径(C:\StellarisWare)安装,即可在任意目录运行。我用的Keil4.22和jlink编译仿真,有问题欢迎您更提出

视频

IMG_1301.JPG (103.65 KB, 下载次数: 3)

非位图按钮

非位图按钮

IMG_1300.JPG (91.92 KB, 下载次数: 2)

仿Win7界面

仿Win7界面

IMG_1302.JPG (124.46 KB, 下载次数: 1)

仿苹果界面

仿苹果界面

IMG_1303.JPG (117.16 KB, 下载次数: 1)

混搭

混搭

IMG_1304.JPG (127.72 KB, 下载次数: 1)

混搭

混搭

Calculator gui2.3.rar

79.86 KB, 下载次数: 94

源程序

最新回复

借用楼主的GUI创意用TI的图形库和原例程实现的win7 计算器 基本功能~http://player.youku.com/player.php/sid/XNDEyODY1NDc2/v.swf [ 本帖最后由 juring 于 2012-6-13 22:09 编辑 ]  详情 回复 发表于 2012-6-13 22:08
 
点赞 关注

回复
举报

437

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
请教两个问题:楼主用的什么字体? win7效果的 button 图片怎么做出来的?谢谢~
 
个人签名
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

板凳
 
原帖由 juring 于 2012-6-12 22:02 发表 请教两个问题:楼主用的什么字体? win7效果的 button 图片怎么做出来的?谢谢~
1、字就是font.h里面定义的字符点阵数组而已,没什么处理
2、button是用位图经过不同的显示形式出来的,上面的几个界面就是靠以下资源组合出来的,看res文件


PS: XD可是隔壁赫赫有名的那个juring
[ 本帖最后由 shower.xu 于 2012-6-13 09:33 编辑 ]
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

4
 

回复 板凳 shower.xu 的帖子

……我看了你的程序,发现你没有TI的图形库呢,高手啊~ 向你多多学习~
可能是我没表达清楚,我想知道,你的bmp图是怎么做出来的~
[ 本帖最后由 juring 于 2012-6-13 09:45 编辑 ]
 
个人签名
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

5
 
哦,用photoshop保存为565的格式的bmp就行了,然后把bmp当作资源直接引进工程,显示的时候跳过位图头等信息直接从第0x46字节开始读位图数据
即下面这几行
                        unsigned short * PixP =  (unsigned short *)(pPicture+0x46+i*(xLong)*2);
                        unsigned short Pix = *(PixP+j);
                        lcd_write_data(Pix);

所以只要知道位图的长宽就行了,是一种偷懒的方法
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

6
 

回复 5楼 shower.xu 的帖子

呃,我的意思是  按键  那几个图片  资源   是网上找的  还是 自己用PS 做的~ 40*32的图片~
 
个人签名
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

7
 
原帖由 juring 于 2012-6-13 10:31 发表 呃,我的意思是 按键 那几个图片 资源 是网上找的 还是 自己用PS 做的~ 40*32的图片~
自己做的,直接从win7计算器上截图处理的
 
 
 

回复

437

帖子

0

TA的资源

五彩晶圆(初级)

8
 
借用楼主的GUI创意
用TI的图形库和原例程实现的win7 计算器 
基本功能~



[ 本帖最后由 juring 于 2012-6-13 22:09 编辑 ]

赞赏

1

查看全部赞赏

 
个人签名
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

9
 
太酷了,我本来想做个完整的,但最后遇到字符和浮点处理之类的搞的头都大了,又忙着赶任务,就丢下了....

Juring要能全部完善的话比TI的例程酷多了..
[ 本帖最后由 shower.xu 于 2012-6-13 23:18 编辑 ]
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表