MTK编程起步.docx
- 文档编号:11156743
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:18
- 大小:24.33KB
MTK编程起步.docx
《MTK编程起步.docx》由会员分享,可在线阅读,更多相关《MTK编程起步.docx(18页珍藏版)》请在冰豆网上搜索。
MTK编程起步
MTK编程起步——常用函数及宏定义
一、屏幕常用类:
clear_screen//清屏
entry_full_screen//全屏幕
gui_BLT_double_buffer//重绘
二、图形类:
GDI:
1、颜色格式转换(宏):
GDI_RGB_TO_BUFFER_FORMAT(R,G,B)
GDI_BUFFER_FORMAT_TO_RGB_R(VALUE)
GDI_BUFFER_FORMAT_TO_RGB_G(VALUE)
GDI_BUFFER_FORMAT_TO_RGB_B(VALUE)
eg:
gdi_colorblue_color;
blue_color=GDI_RGB_TO_BUFFER_FORMAT(0,0,255);
2、绘制像素点:
gdi_draw_point
3、绘制直线及线条:
gdi_draw_line
gdi_draw_line_style
4、绘制矩形及框
gdi_draw_rect
gdi_draw_solid_rect
voidgdi_draw_frame_rect(S32x1,S32y1,S32x2,S32y2,gdi_colorrect_color,gdi_colorframe_color,S32frame_width);//绘制带边框填充矩形
gdi_draw_round_rect
gdi_draw_button_rect
gdi_draw_shadow_rect
gdi_draw_gradient_rect
GUI:
void(*gui_putpixel)(S32x,S32y,colorc)=NULL;//在x,y处绘制一个GUI颜色c
void(*gui_line)(S32x1,S32y1,S32x2,S32y2,colorc)=NULL;
void(*gui_draw_horizontal_line)(S32x1,S32x2,S32y,colorc)=NULL;//绘制水平线
void(*gui_draw_vertical_line)(S32y1,S32y2,S32x,colorc)=NULL;//绘制垂直线
void(*gui_draw_rectangle)(S32x1,S32y1,S32x2,S32y2,colorc)=NULL;
void(*gui_fill_rectangle)(S32x1,S32y1,S32x2,S32y2,colorc)=NULL;//实心矩形
三、图像类:
GDI:
绘制相关:
GDI_RESULTgdi_image_draw(S32offset_x,S32offset_y,U8*image_ptr);
eg:
gdi_image_draw(10,10,get_image(IMG_ID));
GDI_RESULTgdi_image_draw_id(S32offset_x,S32offset_y,U16image_id);
gdi_image_draw_file
eg:
gdi_image_draw_file(10,10,(S8*)L"E:
\\MTK6226\plutommi\mmi\firstapp\new_icon.gif");
gdi_image_draw_resized
gdi_image_draw_animation
gdi_image_draw_animation_once
gdi_image_draw_animation_frames
gdi_image_draw_animation_single_frame
gdi_image_get_dimension
gdi_image_stop_animation
gdi_image_stop_animation_all
gdi_anim_draw_id//通过ID绘制动态图片,6226版用gdi_image_draw_animation_id
eg:
gdi_handlemy_anim;
gdi_anim_draw_id(50,100,IMG_FIRSTAPP_ANIMATE,&my_anim);
gdi_anim_stop//停止动画播放
eg:
gdi_handlemy_anim;
gdi_anim_stop(my_anim);
GDI_RESULTgdi_image_get_dimension_id(U16image_id,S32*width,S32*height);//测量图片所占宽高像素
解码器相关:
gdi_image_decoder_create
gdi_image_decoder_free
gdi_image_decoder_decode_file
gdi_image_decoder_decode_file_with_output_clipping
gdi_image_decoder_get_dimension_file
gdi_image_decoder_stop
gdi_image_decoder_stop_all
GUI:
绘制相关:
void(*gui_show_image)(S32x,S32y,PU8i)=NULL;
eg:
gui_show_image(10,10,(PU8)GetImage(IMG_ID));//使用GetImage方式将资源读取出来
剪裁区相关:
void(*gui_push_clip)(void)=NULL;//进入剪切区域
void(*gui_set_clip)(S32x1,S32y1,S32x2,S32y2)=NULL;//设置剪切区域范围
void(*gui_pop_clip)(void)=NULL;//恢复本来的剪切区域
void(*gui_get_clip)(S32*x1,S32*y1,S32*x2,S32*y2)=NULL;//获得当前激活的剪裁区的大小
void(*gui_reset_clip)(void)=NULL;//重置图像剪切区到默认范围即屏幕大小
四、文本类:
void(*gui_move_text_cursor)(S32x,S32y)=NULL;//设定绘制文本处屏幕坐标
gui_set_text_color
void(*gui_print_text)(UI_string_type_text)=NULL;//绘制文本
eg:
gui_print_text(L"Hello");//只用于模拟器调试,真机不支持
gui_print_text((UI_string_type)GetString(STR_ID));//推荐使用,支持多语言
gui_print_text((UI_string_type)Str);//传递S8(char)类型字符数字指针
void(*gui_print_character)(UI_character_typec)=NULL;//在屏幕上输出一个字符
void(*gui_print_bordered_text)(UI_string_type_text)=NULL;//输出一个带边框的文本
void(*gui_measure_string)(UI_string_typetext,S32*width,S32*height)=NULL;//测量字符串在屏幕上占的像素长度和高度
UI_string_type(*gui_itoa)(S32value,UI_string_types,S32radix)=NULL;//将整形数据转换为字符串,radix是进制,gui_atoi作用相反
五、字体类:
1、字体封装结构体:
typedefstructstFontAttribute
{
U8bold; //粗体,0正常,1粗体,下同
U8italic; //斜体
U8underline; //下划线
U8size; //字号:
SMALL_FONT,MEDIUM_FONT,LARGE_FONT,SUBLCD_FONT(副屏字体),DIALER_FONT(拨号字体),VIRTUAL_KEYBOARD_FONT(虚拟键盘字体)
U8color; //颜色,暂无效,使用gui_set_text_color实现
U8type; //字体,暂无效
U8oblique; //倾斜,比italic斜度小
U8smallCaps; //小写锁定,暂无效
}
eg:
stFontAttributenewfont={0,0,0,MEDIUM_FONT,0,0};
gui_set_font(&newfont);
注意:
该设置只对英文起作用,汉字大小由字库文件决定。
六、颜色类:
1、常用颜色常量:
GUI:
UI_COLOR_LIGHT_GREY
UI_COLOR_WHITE
UI_COLOR_DARK_GREY
UI_COLOR_BLACK
UI_COLOR_NONE
UI_COLOR_RED
UI_COLOR_3D_FILLER
UI_COLOR_GREY
UI_COLOR_GREEN
GDI:
GDI_COLOR_WHITE
GDI_COLOR_BLACK
GDI_COLOR_GRAY
GDI_COLOR_RED
GDI_COLOR_BLUE
GDI_COLOR_GREEN
可利用下面的方式设定需要的颜色:
GUI:
colormy_color={20,20,60,100};
GDI:
gdi_colormy_gdi_color=gdi_act_color_from_rgb(255,255,103,102);
注意:
my_color中第四个参数100和my_gdi_color第一个参数255表示透明度。
七、背景类:
1、填充结构体:
typedefstruct_UI_filled_area
{
U32flags; //控制背景具体类型的标志
PU8b; //背景图片
gradient_color*gc; //渐进颜色
colorc; //背景色
colorac; //用于绘制交叉填充图形的替换色
colorborder_color; //边框颜色
colorshadow_color; //阴影颜色
UI_transparent_color_typetransparent_color; //透明色
}UI_filled_area;
flags组合公式:
flags=类型标志|边框标志|阴影标志(可以是任意个数,不一定非得是3个一样一个)
对应类型如下:
12个类型标志:
#defineUI_FILLED_AREA_TYPE_COLOR //颜色
#defineUI_FILLED_AREA_TYPE_GRADIENT_COLOR //渐进色
#defineUI_FILLED_AREA_TYPE_TEXTURE //纹理
#defineUI_FILLED_AREA_TYPE_BITMAP //位图
#defineUI_FILLED_AREA_TYPE_HATCH_COLOR //百叶窗(背景色c与原始底色交替)
#defineUI_FILLED_AREA_TYPE_ALTERNATE_HATCH_COLOR //交叉百叶窗(背景色c与替换色ac交替)
#defineUI_FILLED_AREA_TYPE_CROSS_HATCH_COLOR //十字图纹(背景色c与原始底色交替)
#defineUI_FILLED_AREA_TYPE_ALTERNATE_CROSS_HATCH_COLOR //交叉十字纹(背景色c与替换色ac交替)
#defineUI_FILLED_AREA_TYPE_NO_BACKGROUND //无背景
#defineUI_FILLED_AREA_TYPE_CUSTOM_FILL_TYPE1 //自定义背景1
#defineUI_FILLEDAREA_TYPE_CUSTOM_FILL_TYPE2 //自定义背景2
#defineUI_FILLED_AREA_TYPE_3D_BORDER //3D边框
8个边框标志:
#defineUI_FILLED_AREA_BORDER //单边框(一个像素宽)
#defineUI_FILLED_AREA_SINGLE_BORDER //单边框,同上
#defineUI_FILLED_AREA_DOUBLE_BORDER //双边框(两个像素宽)
#defineUI_FILLED_AREA_ROUNDED_BORDER //圆角边框
#defineUI_FILLED_AREA_3D_DEPRESSED_BORDER //下陷边框(类似按钮下陷效果)
#defineUI_FILLED_AREA_DEPRESSED_BORDER //突起边框(类似按钮弹起效果)
#defineUI_FILLED_AREA_LEFT_ROUNDED_BORDER //左圆角边框
#defineUI_FILLED_AREA_RIGHT_ROUNDED_BORDER //右圆角边框
2个阴影标志:
#defineUI_FILLED_AREA_SHADOW //单阴影(一个像素宽)
#defineUI_FILLED_AREA_SHADOW_DOUBLE_LINE //双阴影(两个像素宽)
2、渐进色结构体:
typedefstruct_gradient_color
{
color*c; //总共多少种颜色进行渐进
U8*p; //每种颜色所占比例
U8n; //总共颜色数量
}gradient_color;
eg:
colorg_colors[3]={{255,0,0},{0,255,0},{255,0,255}};
U8perc[2]={40,60};
gradient_colorgc={g_colors,perc,3};
……
filler.gc=&gc;
系统定义的3种渐进效果标志:
UI_FILLED_AREA_HORIZONTAL_FILL //水平渐进,默认
UI_FILLED_AREA_VERTICAL_FILL //垂直渐进,从上到下
UI_FILLED_AREA_FLIP_FILL //反转显示
3、常用UI_filled_area结构体对象:
MMI_down_button_filler
MMI_up_button_filler
MMI_disabled_button_filler
MMI_focussed_button_filler
MMI_clicked_button_filler
MMI_multitap_filler
MMI_inputbox_normal_filler
MMI_inputbox_selected_filler
MMI_inputbox_disabled_filler
MMI_scrollcontrol_up_button_filler
MMI_scrollcontrol_down_button_filler
MMI_scrollcontrol_disabled_button_filler
MMI_scrollcontrol_focussed_button_filler
MMI_scroll_up_button_filler
MMI_scroll_down_button_filler
MMI_scroll_disabled_button_filler
MMI_scroll_focussed_button_filler
MMI_scrollbar_normal_filler
MMI_scrollbar_disabled_filler
MMI_scrollbar_focussed_filler
八、层类:
1、层句柄:
主屏幕层句柄:
GDI_LAYER_MAIN_BASE_LAYER_HANDLE
副屏幕层句柄:
GDI_LAYER_SUB_BASE_LAYER_HANDLE
2、层函数:
#definegdi_layer_create(OFFSET_X,OFFSET_Y,WIDTH,HEIGHT,HANDLE_PTR)\
gdi_layer_create_cf(GDI_LCD->cf,OFFSET_X,OFFSET_Y,WIDTH,HEIGHT,HANDLE_PTR)//创建新层
/*参数含义:
OFFSET_X:
新层的起始x坐标
OFFSET_Y:
新层的起始y坐标
WIDTH:
新层的宽度
HEIGHT:
新层的高度
HANDLE_PTR:
新层的句柄地址*/
gdi_layer_multi_layer_enable//用于创建新图层之前,开启多层支持
gdi_layer_multi_layer_disable//退出屏幕时在退出函数中调用关闭多层
voidgdi_layer_set_active(gdi_handlehandle)//激活层
gdi_layer_push_and_set_active(gdi_handlehandle)//层入激活栈
gdi_layer_push_and_set_active()
gdi_layer_pop_and_restore_active()//层出激活栈,恢复之前层显示,与入栈函数成对使用
gdi_push_and_set_alpha_blending_source_layer(active_layer)//该对函数实现png图片透明效果
gdi_pop_and_restore_alpha_blending_source_layer()
gdi_layer_set_blt_layer(gdi_handlebase_layer,gdi_handlehandle,gdi_handlehandle,gdi_handlehandle)//申明要合并的图层
,最多4个,没有时为NULL,第一个层在最下面
gdi_layer_blt(gdi_handlebase_layer,gdi_handlehandle,gdi_handlehandle,gdi_handlehandle,S32offset_x1,S32
offset_y1,S32offset_x2,S32offset_y2)//和上面的函数意义一样,可以省去重绘函数gui_BLT_double_buffer
GDI_RESULTgdi_layer_clear(gdi_colorbg_color)//将新建层颜色刷成bg_color
gdi_layer_get_base_handle(&base_handle)//获取基础层句柄
GDI_RESULTgdi_layer_set_source_key(BOOLsource_key_enable,gdi_colorsource_key_value)//实现通透函数,参数一判断通透是否打开,参数二不需要显示的颜色值
voidgdi_layer_set_clip(S32x1,S32y1,S32x2,S32y2)//设置层剪切区域
gdi_layer_reset_clip//重置剪切区域
GDI_RESULTgdi_layer_set_opacity(BOOLopacity_enable,U8opacity_value)//设置透明,第一个参数判断是否启用,第二个参数透明度0~255
gdi_layer_free//用于退出时释放图层资源
#definegdi_layer_create_using_outside_memory(X,Y,WIDTH,HEIGHT,HANDLE_PTR,OUTMEM_PTR,OUTMEM_SIZE)\
gdi_layer_create_cf_using_outside_memory(GDI_LCD-
>cf,X,Y,WIDTH,HEIGHT,HANDLE_PTR,OUTMEM_PTR,OUTMEM_SIZE)//用于当前资源不够创建新图层时使用此函数分配更多内存用于新建图层
/*参数含义:
X,Y:
新图层起始坐标
WIDTH,HEIGHT:
新图层的宽度和高度
HANDLE_PTR:
新图层句柄地址
OUTMEM_PTR:
新分配内存地址
OUTMEM_SIZE:
内存容量
eg:
gdi_handlenew_layer;
voidEntryFirstAppScreen(void)
{
……
U8*outside_mem=NULL;
gdi_layer_multi_layer_enable();
EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);
outside_mem=(U8*)mmi_frm_scrmem_alloc(((GDI_LCD_WIDTH*GDI_LCD_HEIGHT*GDI_MAINLCD_BIT_PER_PIXEL)>>3));
……
gdi_layer_create_using_outside_memory(10,10,150,150,&new_layer,outside_mem,
((GDI_LCD_WIDTH*GDI_LCD_HEIGHT*GDI_MAINLCD_BIT_PER_PIXEL)>>#));
……
mmi_frm_scrmem_free(outside_mem);
SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);*/
#definemmi_frm_scrmem_alloc_framebuffer(mem_size)\
mmi_frm_scrmem_alloc_framebuffer_int(mem_size,__LINE__)
//使用多媒体内存
gdi_layer_lock_frame_buff
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK 编程 起步