﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-嵌入式</title><link>http://www.cppblog.com/shuhai47/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:10:06 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:10:06 GMT</pubDate><ttl>60</ttl><item><title>李现路:MTK绘画（文本、图形、图像、动画、背景）编程（二）</title><link>http://www.cppblog.com/shuhai47/archive/2010/04/08/111949.html</link><dc:creator>曙海嵌入式</dc:creator><author>曙海嵌入式</author><pubDate>Thu, 08 Apr 2010 04:47:00 GMT</pubDate><guid>http://www.cppblog.com/shuhai47/archive/2010/04/08/111949.html</guid><wfw:comment>http://www.cppblog.com/shuhai47/comments/111949.html</wfw:comment><comments>http://www.cppblog.com/shuhai47/archive/2010/04/08/111949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shuhai47/comments/commentRss/111949.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shuhai47/services/trackbacks/111949.html</trackback:ping><description><![CDATA[第二部分 绘画进阶--背景
一、控制背景绘画的结构体
typedef struct _UI_filled_area
{
dword flags; //总控制标志
UI_image_type b; //背景图像
gradient_color* gc; //递进颜色
color c; //背景色
color ac; //替换色
color border_color; //边框颜色
color shadow_color; //阴影颜色
UI_transparent_color_type transparent_color; //透明色
} UI_filled_area
二、以颜色为背景的处理方法
UI_filled_area filler={0};
filler.flags=UI_FILLED_AREA_TYPE_COLOR|UI_FILLED_AREA_BORDER|UI_FILLED_AREA_SHADOW;
filler.c=UI_COLOR_GREY;
filler.border_color=UI_COLOR_DARK_GREY;
filler.shadow_color=UI_COLOR_3D_FILLER;
gui_draw_filled_area(20,20,156,150,&filler);
扩展理解：
1．颜色控制标志
2．边框控制标志
3．阴影控制标志
三、以递进色为背景
1。递进色结构体
typedef struct_gradient_color
{
color *c;  //颜色列表，数量由最后一个参数n决定
byte *p; //百分比列表，个数为n-1个，依次表示两个相邻颜色递进宽度占整个宽度的百分比；
byte n;  //颜色的数量
}gradient_color;
2.例子
static color g_colors[3]={{255,0,0},{0,255,0},{0,0,255}};
static U8 per[2]={30,70};
gradient_color gc={g_colors,perc,3};
filler.flags=UI_FILLED_AREA_TYPE_GRADIENT_COLOR;
filler.gc=&gc;
3.渐变的扩展知识
另外还有两个参数控制递进色的显示方式：
UI_FILLED_AREA_HORIZONTAL_FILL： 水平方式递进显示，此为默认方式，可以不用设。
UI_FILLED_AREA_VERTICAL_FILL： 垂直方式递进显示，从上到下递进显示。
UI_FILLED_AREA_FLIP_FILL： 反转显示，将递进色从右至左，或从下至上显示。
四、图像背景
1.纹理
示例：
filler.flags=UI_FILLED_AREA_TYPE_TEXTURE;
filler.b=GetImage(MAIN_MENU_MATRIX_ORGANIZER_ICON);
2.一张图片做背景
示例：
filler.flags=UI_FILLED_AREA_TYPE_BITMAP;
filler.b=GetImage(MAIN_MENU_MATRIX_ORGANIZER_ICON);
五、3D效果
示例：
filler.flags=UI_FILLED_AREA_TYPE_3D_BORDER;
filler.c=UI_COLOR_GREY;

  完整版本请见http://www.51qianru.cn/bbs/
                                               曙海教育
                                            曙海3G通信学院
                      (课程:DSP培训,FPGA培训,MTK培训,Android培训，iPhone培训)
                                           电话：021-51875830
                                           网址：http://www.51qianru.cn
                                              讲师：李现路
                             ?版权所有-曙海教育，欢迎转摘，转摘请注明作者和出处
<a href=http://www.tb1990.cn/mtk.htm>MTK java</a>
<a href=http://www.tb1990.cn/mtk.htm>MTK6225 手机开发板</a>
<a href=http://www.huimanxiang.com>深圳MTK培训</a>
<a href=http://www.huimanxiang.com>广州MTK培训</a>
<a href=http://www.huimanxiang.com>深圳FPGA培训</a>
<a href=http://www.huimanxiang.com>广州FPGA培训</a>
<a href=http://www.huimanxiang.com>深圳DSP培训</a>
<a href=http://www.huimanxiang.com>广州DSP培训</a>
<a href=http://www.51qianru.net.cn>上海Iphone培训机构</a>
<a href=http://www.51qianru.net.cn>广州Iphone培训</a>
<a href=http://www.51qianru.net.cn>深圳Iphone培训</a><img src ="http://www.cppblog.com/shuhai47/aggbug/111949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shuhai47/" target="_blank">曙海嵌入式</a> 2010-04-08 12:47 <a href="http://www.cppblog.com/shuhai47/archive/2010/04/08/111949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>李现路:MTK绘画（文本、图形、图像、动画、背景）编程</title><link>http://www.cppblog.com/shuhai47/archive/2010/04/08/111943.html</link><dc:creator>曙海嵌入式</dc:creator><author>曙海嵌入式</author><pubDate>Thu, 08 Apr 2010 04:15:00 GMT</pubDate><guid>http://www.cppblog.com/shuhai47/archive/2010/04/08/111943.html</guid><wfw:comment>http://www.cppblog.com/shuhai47/comments/111943.html</wfw:comment><comments>http://www.cppblog.com/shuhai47/archive/2010/04/08/111943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shuhai47/comments/commentRss/111943.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shuhai47/services/trackbacks/111943.html</trackback:ping><description><![CDATA[第一部分 绘画基础—文本、图形、图像、动画一、MMI 架构 1．WGUILayer 包装后的GUI,WGUI是图形系统中的模板子系统。高级控件 2．GUILayer 图形系统中的绘画子系统 可以做图形，各种几何图形；文本，文字或字符串；填充，将图形和图像整合到一起；控件。 3．GDILayer Graphic：这里面绘制的图形会用响应的硬件加速。 Image:绘制动画，用的是GDI方法 Font:字体管理 LCD&Layers:处理层二、排版常量：常量可能会有一些宏与之作用相同，如MMI_MENUITEM_HEIGHT 与MMI_menuitem_height 都表示菜单项的高度，但建议使用MMI_menuitem_height，因为MMI_MENUITEM_HEIGHT 是菜单项高度的系统初始值，而这个高度在运行时是有可能变化的，MMI_menuitem_height 会依情况自行变化，所以在使用排版常量时建议使用上面列出的这些值。三、常用的颜色表示方法： GUI: {255,103,102,100}---255,103,102(RGB的值)，100--（透明度） GDI: {255,103,102,100}---255(透明度)，103,102,100-- RGB的值四、文本 1．字体用法示例： stFontAttribute f={0}; f.size=LARGE_FONT; gui_set_font(&f); 2.带边框的文字用法示例： gui_set_text_border_color(UI_COLOR_GREEN); gui_print_bordered_text(L"Hello World"); 3.精确排版用法示例： S32 x,y,w,h; gui_measure_string(L"Hello World",&w,&h); x=(UI_device_width-w)/2; y=(UI_device_height-h)/4; gui_move_text_cursor(x,y); 五、图形（一）点示例： gui_putpixel(UI_device_width/2,UI_device_height/2,UI_COLOR_BLACK); (二）线示例： gui_line(30,100,150,140,UI_COLOR_BLACK); （三）框示例： gui_draw_rectangle(x-4,y-4,x+w+4,y+h+4,UI_COLOR_RED); （四）填充框示例： gui_fill_rectangle(x,y,x+w,y+h,UI_COLOR_GREY); (五）带框填充矩形示例： gdi_draw_frame_rect(x-4,y-4,x+w+4,y+h+4,gdi_act_color_from_rgb(255,204,255,102),GDI_COLOR_RED,3); 注意：（1）gdi_act_color_from_rgb(255,204,255,102)---填充色（2）GDI_COLOR_RED--边框的颜色（3） 3--边框的宽度六、图像（一）图像的存储方式 1．资源：（1）资源ID （2）资源Buffer,即以GetImage（IMAGE_ID）方式由资源ID转换过来的 2．文件：从文件系统中动态获取图像 3．Buffer 与资源存储方式不同，资源存储的图像内容中加入了我们自定义的格式数据，而这所说的buffer只有纯粹图像数据（如网络在线下载的临行图像数据等）。（二）静态图像示例： #include "MainMenuDef.h" gdi_image_draw_id(30,110,MAIN_MENU_MU); (二)静态图像示例： #include "MainMenuDef.h" gdi_image_draw_id(30, 110, MAIN_MENU_MATRIX_ORGANIZER_ICON); (三）缩放示例： gdi_image_draw_resized_id(30,100,20,30,MAIN_MENU_MATRIX_ORGANIZER_ICON); (四）动画效果示例： gdi_handle my_anim; void mmi_myapp_entry(void) { gdi_anim_draw_id(50,100,MAIN_MENU_MATRIX_ORGANIZER_ANIMATION,&my_anim); } 停止动画：示例： void stop_my_anim(void) { gdi_anim_stop(my_anim); } void mmi_myapp_entry(void) { gdi_anim_draw_id(50,100,MAIN_MENU_MATRIX_ORGANIZER_ANIMATION,&my_anim); SetKeyHandler(stop_my_anim,KEY_LSK,KEY_EVENT_UP); } 
<a href=http://www.bjzhda.cn/MTK.htm>MTK培训班</a>
<a href=http://www.51qianru.cn/MTK.htm>MTK培训班</a>
<a href=http://www.shuhai9.cn>dsp6000培训班</a>　
<a href=http://www.51qianru.cn>dsp6000培训班</a>  
<a href=http://www.youhuapaiming.cn>FPGA培训班</a>
<a href=http://www.shanghaifdi.cn>symbian 培训班</a>
<a href=http://www.shuhai9.cn>cadence pcb培训班</a>
<a href=http://www.bjzhda.cn>单片机培训班</a>
<a href=http://www.51qianru.com.cn>android培训班</a>
<a href=http://www.morning-sea.cn>brew手机培训</a><img src ="http://www.cppblog.com/shuhai47/aggbug/111943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shuhai47/" target="_blank">曙海嵌入式</a> 2010-04-08 12:15 <a href="http://www.cppblog.com/shuhai47/archive/2010/04/08/111943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>李现路:MTK开发中怎么建立一个独立的模块 </title><link>http://www.cppblog.com/shuhai47/archive/2010/04/08/111941.html</link><dc:creator>曙海嵌入式</dc:creator><author>曙海嵌入式</author><pubDate>Thu, 08 Apr 2010 04:12:00 GMT</pubDate><guid>http://www.cppblog.com/shuhai47/archive/2010/04/08/111941.html</guid><wfw:comment>http://www.cppblog.com/shuhai47/comments/111941.html</wfw:comment><comments>http://www.cppblog.com/shuhai47/archive/2010/04/08/111941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shuhai47/comments/commentRss/111941.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shuhai47/services/trackbacks/111941.html</trackback:ping><description><![CDATA[李现路:MTK开发中怎么建立一个独立的模块 具体步骤如下： 1../plutommi/mmi 目录先建一个HelloWorld文件夹 文件夹下的子文件夹：Inc，Res，Src 2.在Inc文件夹中放四个头文件，四个头文件分别以xxxDefs.h,xxxGprot.h xxxProt.h,xxxTypes.h来命名 3.xxxDefs.h--本模块用到的资源 ID的定义 xxxGprot.h--本模块的对外接口，供模块外部调用的函数原型在此申明 xxxProt.h---模块内部接口，供模块内部调用的函数原型在此申明 xxxTypes.h--本模块用到的一些常量、自定义数据类型、结构的定义 4.在HelloWorld.c中定义开关（方便我们随时调用）： #ifdef __MMI_HELLOWORLD_ENABLED__ ， #endif 我们建立的文件夹里，所有头文件和源文件的内容如下： 头文件 HelloWorldGprot.h 的内容如下： /*************************************************************************/ #ifndef __HELLOWORLD_GPROT_H__ #define __HELLOWORLD_GPROT_H__ #include "PixtelDataTypes.h" #include "HelloWorldTypes.h" extern void mmi_HelloWorld_entry(void); #endif /*************************************************************************/ 头文件 HelloWorldProt.h 的内容的如下： /*************************************************************************/ #ifndef __HELLOWORLD_GPROT_H__ #define __HELLOWORLD_GPROT_H__ #include "PixtelDataTypes.h" #include "HelloWorldTypes.h" extern void mmi_HelloWorld_entry(void); #endif /*************************************************************************/ HelloWorldTypes.h, HelloWorldDefs.h 两个头文件的内容为空即可，但是一定要建立文 件，否则后面编译会出错。 HelloWorld.c 的内容如下： /*************************************************************************/ #include "stdC.h" #include "MMI_Features.h" #include "L4Dr.h" #include "L4Dr1.h" #include "AllAppGprot.h" #include "FrameworkStruct.h" #include "GlobalConstants.h" #include "EventsGprot.h" #include "mmiappfnptrs.h" #include "HistoryGprot.h" #include "HelloWorldProt.h" #include "HelloWorldTypes.h" #include "HelloWorldDefs.h" #include "MainMenuDef.h" #include "wgui_categories.h" #include "Unicodexdcl.h" void mmi_HelloWorld_exit(void); void mmi_HelloWorld_entry(void) { #ifdef __MMI_HELLOWORLD_ENABLED__ /* 强制退出当前屏幕，之后进入到我们的模块了 */ /* 上电缺省是idle 屏幕，现进入MAIN_MENU_SCREENID 屏 */ /* 注意看第二个参数，这个是当我们模块被强制退出时执行的一些操作 */ EntryNewScreen(MAIN_MENU_SCREENID, mmi_HelloWorld_exit, NULL, NULL); entry_full_screen(); /* 关掉屏幕顶部的状态条，我们要用整个屏幕 */ clear_screen(); /* 擦除当前背景 */ gui_move_text_cursor(50, 100); /* 移动文本输出光标 */ gui_set_text_color(UI_COLOR_RED); /* 设置字体颜色 */ gui_print_text(L"Hello, World"); /* 输出文本到显示缓冲, 注意是Unicode 编码 */ /* 刷新屏幕显示，MMI 用的是双缓冲绘图方式，而且需要显式刷新 */ gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); /* 注册一个按键处理，右软键弹起时返回到之前被我们强制退出的模块 */ SetKeyHandler(GoBackHistory, KEY_RSK, KEY_EVENT_UP); #endif } /* 模块出口 * 当我们的模块被其他模块强制退出时会执行这个函数， * 这个函数的常见写法，包括： * 1、模块已申请资源的释放(如果需要的话)，这一步可选 * 2、手动把自己压栈到窗口(实际是整个屏)堆栈里面， * 便于强制我们退出的模块执行完后重新把我们叫出来 * 不像Window 的窗口管理是自动压栈的，Pluto MMI 需要手动压栈 * 3、其他一些清理动作 */ void mmi_HelloWorld_exit(void) { #ifdef __MMI_HELLOWORLD_ENABLED__ history currHistory; S16 nHistory = 0; currHistory.scrnID = MAIN_MENU_SCREENID; currHistory.entryFuncPtr = mmi_HelloWorld_entry; pfnUnicodeStrcpy( (S8*)currHistory.inputBuffer, (S8*)&nHistory); AddHistory(currHistory); #endif } 5.MainMenu.c放的代码 #ifdef __MMI_HELLOWORLD_ENABLED__ mmi_HelloWorld_entry(); return; #else ....... #endif 6.修改相关的系统文件，使这个模块成为成为整个项目的一部分： 修改./make/plutommi下的3个文件： plutommi.inc---所有mmi部分的头文件所在目录的相对路径列表 plutommi.lis---所有mmi部分的源文件(相对路径)列表 plutommi.pth---所有mmi部分的源文件所在目录的相对路径列表 plutommi.inc里加（顶部）： plutommi\mmi\HelloWorld\Inc plutommi.lis里加（顶部）： plutommi\mmi\HelloWorld\Src\HelloWorld.c plutommi.pth里加（顶部）： plutommi\mmi\HelloWorld\Src 7.把开关加入系统： \plutommi\Customer\CustResource\PLUTO_MMI\MMI_featuresPLUTO.h (mmi的配置文件） [Framework]: Languages 下加： #define __MMI_HELLOWORLD_ENABLED__ 8.让模拟器找到头文件： 在\plutommi\mmi\GlobalSimulatorPathDef 的顶部添加以下内容： /I ".\HelloWorld\Inc" 9.在cmd中，在源代码根目录下执行命令：make update 编译完成后再在vc在运行run 错误可在build\NEOTEL25_06B\log找相关信息 完整版本请见http://www.51qianru.cn/bbs/ 曙海教育 曙海嵌入式学院 (课程:DSP培训,FPGA培训,MTK培训,Android培训，iPhone培训) 电话：021-51875830 网址：http://www.51qianru.cn 讲师：李现路 -版权所有-曙海教育，欢迎转摘，转摘请注明作者和出处课程有：<a href=http://www.youhuapaiming.cn>FPGA培训班</a>
<a href=http://www.shanghaifdi.cn>symbian 培训班</a>
<a href=http://www.shuhai9.cn>cadence pcb培训班</a>
<a href=http://www.bjzhda.cn>单片机培训班</a>
<a href=http://www.51qianru.com.cn>android培训班</a>
<a href=http://www.morning-sea.cn>brew手机培训</a>
<a href=http://www.51qianru.cn>dsp培训</a>
<a href=http://www.shuhai9.cn>嵌入式培训</a>
<a href=http://www.youhuapaiming.cn>嵌入式培训</a>
<a href=http://www.bjzhda.cn>pads培训</a>
<a href=http://www.shuhai9.cn>高速板PCB培训</a><img src ="http://www.cppblog.com/shuhai47/aggbug/111941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shuhai47/" target="_blank">曙海嵌入式</a> 2010-04-08 12:12 <a href="http://www.cppblog.com/shuhai47/archive/2010/04/08/111941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>