当前位置: 首页 > news >正文

正保建设工程教育网站市场调研公司怎么盈利

正保建设工程教育网站,市场调研公司怎么盈利,信息化建设官方网站,机械加工网厂前言#xff1a; 前面我们已经把显示系统、输入系统、文字系统搭建好了#xff0c;现在我们就要给它实现按钮操作了#xff0c;也就是搭建UI系统#xff0c;下面让我们一起实现UI系统的搭建吧 目录 一、按钮数据结构抽象 ui.h 二、按键编程 1.button.c 2.disp_manager… 前言 前面我们已经把显示系统、输入系统、文字系统搭建好了现在我们就要给它实现按钮操作了也就是搭建UI系统下面让我们一起实现UI系统的搭建吧 目录 一、按钮数据结构抽象 ui.h 二、按键编程  1.button.c 2.disp_manager.c 3. disp_manager.h 三、单元测试 1.ui_test.c 2.unittest下的Makefile 3. ui下的Makefile 4.顶层目录下的Makefile 四、上板测试 1.ubuntu上 2. 开发板上 3.运行效果 一、按钮数据结构抽象 1.所谓UI就是User Interface(用户界面)有图像界面(GUI)等 2.我们的UI系统就是构造各类GUI元素比如按钮(目前只实现按钮) 3.怎么描述一个按钮呢         3.1 它的位置、大小怎么表示         3.2 怎么绘制它         3.3 用户点击它之后如何处理 ui.h #ifndef _UI_H #define _UI_H#include common.h #include disp_manager.h #include input_manager.h#define BUTTON_DEFAULT_COLOR 0xff0000 #define BUTTON_PRESSED_COLOR 0x00ff00 #define BUTTON_TEXT_COLOR 0x000000struct Button;typedef int (*ONDRAW_FUNC)(struct Button *ptButton, PDispBuff ptDispBuff); typedef int (*ONPRESSED_FUNC)(struct Button *ptButton, PDispBuff ptDispBuff, PInputEvent ptInputEvent);typedef struct Button {char *name;int status;Region tRegion;ONDRAW_FUNC OnDraw;ONPRESSED_FUNC OnPressed; }Button, *PButton;void InitButton(PButton ptButton, char *name, PRegion ptRegion, ONDRAW_FUNC OnDraw, ONPRESSED_FUNC OnPressed);#endif 第9~11行定义红绿黑三种颜色 第20行描述结构体的名字 第22行描述按钮区域的位置 第23行OnDraw:提供一个绘制函数 第24行OnPressed:点击以后执行某些函数 二、按键编程  1.点击按钮后怎么处理是业务系统的事情 2.所以应该提供一个InitButton函数让用户可以提供OnPressed函数 3.上层代码通过下面3个函数使用按钮 1.button.c #include ui.hstatic int DefaultOnDraw(struct Button *ptButton, PDispBuff ptDispBuff) {/* 绘制底色 */DrawRegion(ptButton-tRegion, BUTTON_DEFAULT_COLOR);/* 居中写文字 */DrawTextInRegionCentral(ptButton-name, ptButton-tRegion, BUTTON_TEXT_COLOR);/* flush to lcd/web */FlushDisplayRegion(ptButton-tRegion, ptDispBuff);return 0; }static int DefaultOnPressed(struct Button *ptButton, PDispBuff ptDispBuff, PInputEvent ptInputEvent) {unsigned int dwColor BUTTON_DEFAULT_COLOR;ptButton-status !ptButton-status;if (ptButton-status)dwColor BUTTON_PRESSED_COLOR;/* 绘制底色 */DrawRegion(ptButton-tRegion, dwColor);/* 居中写文字 */DrawTextInRegionCentral(ptButton-name, ptButton-tRegion, BUTTON_TEXT_COLOR);/* flush to lcd/web */FlushDisplayRegion(ptButton-tRegion, ptDispBuff);}void InitButton(PButton ptButton, char *name, PRegion ptRegion, ONDRAW_FUNC OnDraw, ONPRESSED_FUNC OnPressed) {ptButton-status 0;ptButton-name name;ptButton-tRegion *ptRegion;ptButton-OnDraw OnDraw ? OnDraw : DefaultOnDraw;ptButton-OnPressed OnPressed ? OnPressed : DefaultOnPressed; } static int DefaultOnDraw(struct Button *ptButton, PDispBuff ptDispBuff) 第6~16行实现默认的 DefaultOnDraw 函数         第8行某一区域绘制底色         第12行居中写文字         第15行刷新到LCD或者web上 static int DefaultOnPressed(struct Button *ptButton, PDispBuff ptDispBuff, PInputEvent ptInputEvent) 第20~37行实现默认的 DefaultOnPressed 函数         第22行设置初始状态颜色                 第24行每次点击初始状态翻转         第25行如果初始状态变为1则颜色进行翻转         第28~35行进行颜色变化 void InitButton(PButton ptButton, char *name, PRegion ptRegion, ONDRAW_FUNC OnDraw, ONPRESSED_FUNC OnPressed) 第40~47行初始化按键         第42行记录初始状态         第43行将按钮名字传入         第44行将按钮所在区域传入         第45、46行如果按下一个这个函数存在的话那就执行这个函数否则执行默认的函数 2.disp_manager.c 将ptRegion这一部分区域绘制成dwColor的颜色 void DrawRegion(PRegion ptRegion, unsigned int dwColor) {int x ptRegion-iLeftUpX;int y ptRegion-iLeftUpY;int width ptRegion-iWidth;int heigh ptRegion-iHeigh;int i,j;for (j y; j y heigh; j){for (i x; i x width; i)PutPixel(i, j, dwColor);} } 在一个区域ptRegion中间将位置居中并且设置字体颜色 void DrawTextInRegionCentral(char *name, PRegion ptRegion, unsigned int dwColor) {int n strlen(name);int iFontSize ptRegion-iWidth / n / 2;FontBitMap tFontBitMap;int iOriginX, iOriginY;int i 0;int error;if (iFontSize ptRegion-iHeigh)iFontSize ptRegion-iHeigh;iOriginX (ptRegion-iWidth - n * iFontSize)/2 ptRegion-iLeftUpX;iOriginY (ptRegion-iHeigh - iFontSize)/2 iFontSize ptRegion-iLeftUpY;SetFontSize(iFontSize);while (name[i]){/* get bitmap */tFontBitMap.iCurOriginX iOriginX;tFontBitMap.iCurOriginY iOriginY;error GetFontBitMap(name[i], tFontBitMap);if (error){printf(SelectAndInitFont err\n);return;}/* draw on buffer */ DrawFontBitMap(tFontBitMap, dwColor); iOriginX tFontBitMap.iNextOriginX;iOriginY tFontBitMap.iNextOriginY; i;}} 3. disp_manager.h #ifndef _DISP_MANAGER_H #define _DISP_MANAGER_H#include common.h #include font_manager.htypedef struct DispBuff {int iXres;int iYres;int iBpp;char *buff; }DispBuff, *PDispBuff;typedef struct DispOpr {char *name;int (*DeviceInit)(void);int (*DeviceExit)(void);int (*GetBuffer)(PDispBuff ptDispBuff);int (*FlushRegion)(PRegion ptRegion, PDispBuff ptDispBuff);struct DispOpr *ptNext; }DispOpr, *PDispOpr;void RegisterDisplay(PDispOpr ptDispOpr);void DisplayInit(void); int SelectDefaultDisplay(char *name); int InitDefaultDisplay(void); int PutPixel(int x, int y, unsigned int dwColor); int FlushDisplayRegion(PRegion ptRegion, PDispBuff ptDispBuff); PDispBuff GetDisplayBuffer(void); void DrawFontBitMap(PFontBitMap ptFontBitMap, unsigned int dwColor); void DrawRegion(PRegion ptRegion, unsigned int dwColor); void DrawTextInRegionCentral(char *name, PRegion ptRegion, unsigned int dwColor);#endif 三、单元测试 1.ui_test.c #include sys/mman.h #include sys/types.h #include sys/stat.h #include unistd.h #include linux/fb.h #include fcntl.h #include stdio.h #include string.h #include sys/ioctl.h #include stdlib.h#include disp_manager.h #include font_manager.h #include ui.hint main(int argc, char **argv) {PDispBuff ptBuffer;int error;Button tButton;Region tRegion;if (argc ! 2){printf(Usage: %s font_size\n, argv[0]);return -1;}DisplayInit();SelectDefaultDisplay(fb);InitDefaultDisplay();ptBuffer GetDisplayBuffer();FontsRegister();error SelectAndInitFont(freetype, argv[1]);if (error){printf(SelectAndInitFont err\n);return -1;}tRegion.iLeftUpX 200;tRegion.iLeftUpY 200;tRegion.iWidth 300;tRegion.iHeigh 100;InitButton(tButton, test, tRegion, NULL, NULL);tButton.OnDraw(tButton, ptBuffer);while (1){tButton.OnPressed(tButton, ptBuffer, NULL);sleep(2);}return 0; } 第23~27行打印用法         font_size指定字库文件 第29~35行显示系统初始化  第37~39行字体系统初始化 第46~57行UI系统初始化         第46~49行显示区域位置         第51行初始化按钮           第52行将按钮绘制显示出来         第55行模拟点击 2.unittest下的Makefile EXTRA_CFLAGS : CFLAGS_file.o : #obj-y disp_test.o #obj-y input_test.o #obj-y font_test.o obj-y ui_test.o 3. ui下的Makefile EXTRA_CFLAGS : CFLAGS_file.o : obj-y button.o 4.顶层目录下的Makefile CROSS_COMPILE ? AS $(CROSS_COMPILE)as LD $(CROSS_COMPILE)ld CC $(CROSS_COMPILE)gcc CPP $(CC) -E AR $(CROSS_COMPILE)ar NM $(CROSS_COMPILE)nmSTRIP $(CROSS_COMPILE)strip OBJCOPY $(CROSS_COMPILE)objcopy OBJDUMP $(CROSS_COMPILE)objdumpexport AS LD CC CPP AR NM export STRIP OBJCOPY OBJDUMPCFLAGS : -Wall -O2 -g CFLAGS -I $(shell pwd)/includeLDFLAGS : -lts -lpthread -lfreetypeexport CFLAGS LDFLAGSTOPDIR : $(shell pwd) export TOPDIRTARGET : testobj-y display/ obj-y input/ obj-y font/ obj-y ui/ obj-y unittest/all : start_recursive_build $(TARGET)echo $(TARGET) has been built!start_recursive_build:make -C ./ -f $(TOPDIR)/Makefile.build$(TARGET) : built-in.o$(CC) -o $(TARGET) built-in.o $(LDFLAGS)clean:rm -f $(shell find -name *.o)rm -f $(TARGET)distclean:rm -f $(shell find -name *.o)rm -f $(shell find -name *.d)rm -f $(TARGET) obj-y display/ obj-y input/ obj-y font/ obj-y ui/ obj-y unittest/ 四、上板测试 1.ubuntu上 book100ask:~/source$ make book100ask:~/source$ cp -r 20_ui_unittest/ ~/nfs_rootfs/2. 开发板上 [root100ask:/]# mount -t nfs -o nolock,vers3 192.168.5.11:/home/book/nfs_rootfs /mnt [root100ask:/mnt/20_ui_unittest]# ./test ./simsun.ttc3.运行效果 每隔两秒切换一下颜色
http://www.hkea.cn/news/14358587/

相关文章:

  • 高度重视部门网站建设什么是手机app
  • 免费国外网站空间安徽网络优化方案
  • 怎么做网站网站推广深圳市建设工程监理协会网站
  • 代做网站的好处百度账号查询
  • 做网站的公司多少钱网页广告设计师培训
  • 自己架服务器做网站爱站网长尾挖掘工具
  • wordpress 建站后端电商项目策划书
  • 做百度手机网站优化快厦门住房建设局网站首页
  • 学做电商网站设计长沙网站策划
  • 做宣传图册在什么网站餐饮设计公司名字
  • 织梦网站被做跳转图片在线转外链
  • 网站查询明月wordpress
  • 全网营销网站建设如何找外包的销售团队
  • 深圳大型网站建设服务公司东莞专业做网站优化
  • 微信网站开发用什么语言wordpress需注册访问
  • 做网站公宁波网站建设优化企业推荐
  • 网站建设必会的软件军刀seo
  • 信息手机网站模板下载安装重庆公司建站
  • 珠海网站制作系统企业公司建设网站
  • 广东平台网站建设找哪家郑州网站关键
  • 做淘宝优惠券推广网站实用网站推荐
  • 网站开发具体工作有那些redis加速wordpress
  • 《网站建设验收报告》外贸服饰网站建设
  • 宝山网站建设公司做网站招标
  • 北京网站建设招标wordpress微信小程序one
  • 合肥商城网站建设多少钱网络推广心得体会
  • 做卡贴的网站网站建设公司怎么寻找客户呢
  • 建设网站的费用预算网站建设评比自评情况
  • 深圳建外贸网站秀米同步到Wordpress
  • 枣庄网站开发招聘公示网企业公示信息查询系统