GT-HMI Engine 以 WebAssembly 在浏览器内实时渲染——无需安装 Designer,改参数、点画布即可看到控件效果, 与手册各控件小节内嵌的演示卡同源。共 42 个控件演示,画布规格 480×320,滚动到视口时才会加载引擎。
屏幕控件是所有控件的父容器。真机用 gt_screen_set_bgcolor 设置背景色;官网演示经通用背景色桥注入(该 setter 在 wasm 构建同样生效于下一帧重绘)。
/* screen_home —— 摘自手册 2.1 节 */// 初始化屏幕(作为所有控件的父容器)screen_home = gt_init_screen_home();// 设置屏幕背景颜色为白色gt_screen_set_bgcolor(screen_home, gt_color_white());// 官网演示:经通用对象背景色桥注入并失效重绘// gt_obj_set_bgcolor(screen_home, gt_color_hex(0xF0F2F5));真机流程经资源包 gt_img_set_src(".:20.bmp") 取图;官网演示无资源包,经 wasm 桥注入原始 RGBA 像素(同一解码渲染路径)。可切换三种图片内容并开关轮廓遮罩。
/* img1 —— 摘自手册 2.2 节示例 */// 在 screen_home 屏幕控件中创建一个图片控件img1 = gt_img_create(screen_home);// 设置图片控件的位置为 (140, 90)gt_obj_set_pos(img1, 140, 90);// 设置图片控件的尺寸为(宽度 200 高度 140)gt_obj_set_size(img1, 200, 140);// 设置图片控件的图片数据访问路径(真机:资源包内图片)gt_img_set_src(img1, ".:20.bmp");// 官网演示无资源包:经 wasm 桥注入原始 RGBA 像素(右侧面板可切换三种内容)// gt_img_set_raw_data(img1, raw_rgba_data);// 设置图片轮廓遮罩效果(右侧面板可开关)gt_img_set_masking(img1, false);与手册 2.3 节示例一致:演示字库为 18 点 GBK 黑体点阵(4bit 灰度抗锯齿),面板可改文本、颜色、对齐与字间距。
/* lab1 —— 摘自手册 2.3 节示例 */// 在 screen_home 屏幕控件中创建一个标签控件lab1 = gt_label_create(screen_home);// 设置标签控件的位置为 (40, 130)gt_obj_set_pos(lab1, 40, 130);// 设置标签控件的尺寸(宽度 400 高度 60)gt_obj_set_size(lab1, 400, 60);// 使用 0 号字体系列(本页演示字库:18 点 GBK 黑体点阵,4bit 灰度抗锯齿)gt_label_set_font_family(lab1, 0);// 设置标签控件显示的字体尺寸为 18 点gt_label_set_font_size(lab1, 18);// 设置对齐方式为水平垂直居中gt_label_set_font_align(lab1, GT_ALIGN_CENTER_MID);// 设置标签控件文本颜色为 0x000000 黑色gt_label_set_font_color(lab1, gt_color_hex(0x000000));// 设置标签控件显示的文本gt_label_set_text(lab1, "高通字体引擎");与手册 2.4 节一致:逐段追加带样式的文本(每段可独立颜色/粗体),支持清空。演示字库为 18 点 GBK 点阵(4bit 灰度)。
/* textarea1 —— 摘自手册 2.4 节示例 */// 在 screen_home 屏幕控件中创建一个文本区控件textarea1 = gt_textarea_create(screen_home);// 设置文本区控件的位置为 (60, 70)gt_obj_set_pos(textarea1, 60, 70);// 设置文本区控件的尺寸(宽度 360 高度 180)gt_obj_set_size(textarea1, 360, 180);// 设置文本区背景颜色为浅灰gt_textarea_set_bg_color(textarea1, gt_color_hex(0xf5f7fa));// 设置默认字体颜色为深灰gt_textarea_set_font_color(textarea1, gt_color_hex(0x2c3e50));// 设置字体大小为 18 点gt_textarea_set_font_size(textarea1, 18);// 逐段追加文本:每段可带独立样式与颜色(GT_FONT_STYLE_NORMAL / BOLD)gt_textarea_add_str(textarea1, "中英混排演示\n", GT_FONT_STYLE_NORMAL, gt_color_hex(0x2c3e50));gt_textarea_add_str(textarea1, "点阵四比特灰度渲染\n", GT_FONT_STYLE_BOLD, gt_color_hex(0xe74c3c));// 设置内边距为 14 像素(注意:需在 add_str 之后调用,add 前设置会被文本布局覆盖)gt_textarea_set_padding(textarea1, 14);// 清空全部文本(右侧面板可操作)// gt_textarea_clear_all_str(textarea1);与手册 2.5 节示例一致:单行内容 + 占位符(内容为空时显示)+ 密码模式(内容以 * 隐藏)。演示字库为 18 点 GBK 点阵(4bit 灰度)。
/* input1 —— 摘自手册 2.5 节示例 */// 在 screen_home 屏幕控件中创建一个输入框控件input1 = gt_input_create(screen_home);// 设置输入框控件的位置为 (120, 138)gt_obj_set_pos(input1, 120, 138);// 设置输入框控件的尺寸(宽度 240 高度 44)gt_obj_set_size(input1, 240, 44);// 设置字体颜色为深灰gt_input_set_font_color(input1, gt_color_hex(0x2c3e50));// 设置字体大小为 18 点gt_input_set_font_size(input1, 18);// 设置占位符文本(内容为空时显示)gt_input_set_placeholder(input1, "输入演示");// 设置输入内容(右侧面板可切换,含密码模式)gt_input_set_value(input1, "admin");与手册 2.6 节 API 一致:item0/item1 两组项目按 value 的每一位独立切换(0=item0、1=item1),active 是 16 位掩码可同时激活多个位置。大图标演示单 bit 状态切换与 8 种显示模式(2/4/5/7 为逐帧动画),LED 行演示多位掩码、指定位 set_value_bit 与移动模式/间隙。
/* bitimg1 —— 摘自手册 2.6 节示例 */// 在 screen_home 屏幕控件中创建一个位图控件gt_obj_st * bitimg1 = gt_bit_img_create(screen_home);// 设置控件坐标gt_obj_set_pos(bitimg1, 100, 80);// 设置控件尺寸(首次取图后按 item 实际宽高自动修正)gt_obj_set_size(bitimg1, 48, 48);// 添加两组项目(真机:资源包内图片名;byte_size 须传名字完整长度,传短名字被截断将匹配失败)gt_bit_img_add_item0(bitimg1, ".:icon_off.bmp", 14);gt_bit_img_add_item1(bitimg1, ".:icon_on.bmp", 13);// 激活位(16 位掩码:多个 bit 同时激活即多位排列,右侧面板 LED 行为 6 位示例)gt_bit_img_set_active(bitimg1, 0x0001);// 设置位值:每一位独立选择该位的 item0(位=0)/ item1(位=1)gt_bit_img_set_value(bitimg1, 1);// 设置动画时间 500ms(显示模式 2/4/5/7 且对应组项目≥2 帧时逐帧播放)gt_bit_img_set_time(bitimg1, 500);// 官网演示无资源包:经 gt_src_init 把合成 BGRA 图按同名注册进 src 数组(同一解码路径)图片按钮以位图作为按钮皮肤,默认/按下/释放三态可分别设图。真机经资源包 set_src(".:a.bmp") 取图;官网演示无资源包,经 raw 结构注入像素(同一渲染路径)。点击画布按钮可看到按下态换图。
/* imgbtn —— 摘自手册 3.1 节 */// 创建图片按钮控件gt_obj_st * imgbtn1 = gt_imgbtn_create(screen_home);// 设置位置 (180, 130) 与尺寸 120 x 60gt_obj_set_pos(imgbtn1, 180, 130);gt_obj_set_size(imgbtn1, 120, 60);// 设置默认状态图片(资源包路径)gt_imgbtn_set_src(imgbtn1, ".:blue.bmp");// 设置按下状态图片(按压时切换)gt_imgbtn_set_src_press(imgbtn1, ".:red.bmp");// 设置释放状态图片(松开后切回)// gt_imgbtn_set_src_release(imgbtn1, ".:blue.bmp");键盘控件提供屏幕虚拟键盘,通过 set_target 关联输入框后按键输入直达输入框。面板可改按键颜色与键盘底色(gt_color_t 按指针传参)。
/* keypad1 —— 摘自手册 3.2 节 */// 在 screen_home 屏幕控件中创建一个键盘控件keypad1 = gt_keypad_create(screen_home);// 设置键盘控件的位置为(0, 90)gt_obj_set_pos(keypad1, 0, 90);// 设置键盘控件的尺寸为(宽度 480 高度 230)gt_obj_set_size(keypad1, 480, 230);// 设置默认布局为 26 键全键盘gt_keypad_set_default_style(keypad1, GT_KEYPAD_STYLE_26_KEY);// 设置按键类型为英文小写gt_keypad_set_type(keypad1, GT_KEYPAD_TYPE_LOWER);// 设置按键字体大小为 16ptgt_keypad_set_font_size(keypad1, 16);// 关联目标输入框(按键输入直达输入框)gt_keypad_set_target(keypad1, input1);与手册 3.3 节示例一致:点击画布中的开关切换开/关,参数面板可切换样式和颜色。
/* switch1 —— 摘自手册 3.3 节示例 */// 在 screen_home 屏幕控件中创建一个开关控件switch1 = gt_switch_create(screen_home);// 设置开关控件的位置为 (204, 142)gt_obj_set_pos(switch1, 204, 142);// 设置开关控件的尺寸为(宽度 72 高度 36)gt_obj_set_size(switch1, 72, 36);// 设置开关控件的初始状态为开(点击控件可切换)gt_obj_set_state(switch1, 1);// 设置开关控件活跃颜色为 0x13ce66 的绿色gt_switch_set_color_act(switch1, gt_color_hex(0x13ce66));// 设置开关样式为默认圆形(右侧面板可切换方形 / 细轴)gt_switch_set_style(switch1, GT_SWITCH_STYLE_DEFAULT);// 设置轨道中间显示分隔线(右侧面板可切换)gt_switch_set_div_line(switch1, false);图片轮播容器:TYPE_IMG 模式下逐项切换图片帧。注意本引擎构建切换索引后不自动标脏区,需手动失效刷新(官网演示已内置处理)。
/* player —— 摘自手册 3.4 节 */// 创建幻灯片控件gt_obj_st * player1 = gt_player_create(screen_home);// 设置播放类型为图片、循环模式gt_player_set_type(player1, GT_PLAYER_TYPE_IMG);gt_player_set_mode(player1, GT_PLAYER_MODE_LOOP);// 添加三张轮播图片(资源包路径)gt_player_add_item(player1, ".:frame_red.bmp", 0);gt_player_add_item(player1, ".:frame_green.bmp", 0);gt_player_add_item(player1, ".:frame_blue.bmp", 0);// 设置当前项为第 0 帧gt_player_set_index(player1, 0);// 手动切换上一帧 / 下一帧gt_player_turn_next(player1);// 自动轮播:每 1000ms 切一帧(0 = 停止)gt_player_set_auto_play_period(player1, 1000);与手册 3.5 节一致:数值/步进/前导零补齐实时可调,画布内点击 +/- 区域可按步进增减(引擎交互)。
/* inputNum1 —— 摘自手册 3.5 节示例 */// 在 screen_home 屏幕控件中创建一个计数器控件inputNum1 = gt_input_number_create(screen_home);// 设置计数器控件位置为 (150, 138)gt_obj_set_pos(inputNum1, 150, 138);// 设置计数器控件的尺寸为(宽度 180 高度 44)gt_obj_set_size(inputNum1, 180, 44);// 设置字体颜色为深灰gt_input_number_set_font_color(inputNum1, gt_color_hex(0x2c3e50));// 设置字号为 18 点gt_input_number_set_font_size(inputNum1, 18);// 设置最小值为 0,最大值为 1000gt_input_number_set_min(inputNum1, 0);gt_input_number_set_max(inputNum1, 1000);// 设置递增/递减的步进值为 2(右侧面板可调)gt_input_number_set_step(inputNum1, 2);// 设置小数部分显示宽度为 0(整数显示)gt_input_number_set_display_decimal_length(inputNum1, 0);// 设置整数部分显示宽度为 3gt_input_number_set_display_integer_length(inputNum1, 3);// 开启前导零补齐:88 显示为 088(右侧面板可开关)gt_input_number_set_fill_zero_front(inputNum1, true);// 设置计数值为 88(画布内点击数值两侧可按步进增减)gt_input_number_set_value(inputNum1, 88);按钮的圆角、边框、背景色/按下色实时可调。按住画布中的按钮可看到按下态颜色切换。
/* btn1 —— 摘自手册 3.6 节示例(文本/字体行需字库,此处略) */// 在 screen_home 屏幕控件中创建一个按钮控件btn1 = gt_btn_create(screen_home);// 设置按钮的位置为 (160, 128)gt_obj_set_pos(btn1, 160, 128);// 设置按钮的尺寸为(宽度 160 高度 64)gt_obj_set_size(btn1, 160, 64);// 设置按钮背景颜色为 0x00a8ff 蓝色gt_btn_set_color_background(btn1, gt_color_hex(0x00a8ff));// 设置按钮按下时的背景颜色gt_btn_set_color_pressed(btn1, gt_color_hex(0x0097e6));// 设置按钮圆角半径为 8(右侧面板可调)gt_btn_set_radius(btn1, 8);// 设置按钮边框宽度(右侧面板可调,0 = 无边框)gt_btn_set_border_width(btn1, 0);// 设置按钮边框颜色为 0x2f3542 深灰(边框宽度 > 0 时可见)gt_btn_set_color_border(btn1, gt_color_hex(0x2f3542));与手册 3.7 节一致:gt_clock_start 后引擎任务驱动走秒实时刷新;显示格式(时:分:秒 / 中文格式 / 年月日)与启停可调。
/* clock1 —— 摘自手册 3.7 节示例(倒计时/闹钟行略) */// 在 screen_home 屏幕控件中创建一个时钟控件clock1 = gt_clock_create(screen_home);// 设置时钟控件位置为 (110, 138)gt_obj_set_pos(clock1, 110, 138);// 设置时钟控件的尺寸为(宽度 260 高度 44)gt_obj_set_size(clock1, 260, 44);// 设置字体颜色为深灰gt_clock_set_font_color(clock1, gt_color_hex(0x2c3e50));// 设置字号为 18 点gt_clock_set_font_size(clock1, 18);// 设置当前时间为 10 时 30 分 8 秒gt_clock_set_time(clock1, 10, 30, 8);// 设置显示格式(右侧面板可切换中文格式 / 年月日)gt_clock_set_format(clock1, "hh:mm:ss");// 开启时钟:引擎任务驱动每秒刷新gt_clock_start(clock1);EAN-13 条形码,模块宽度/高度(黑白条粗细与条高)实时可调。引擎按条码自然尺寸重设控件区域并左上锚定,模块参数变化后演示会自动重新居中。
/* barcode1 —— 摘自手册 4.1 节示例 */// 在 screen_home 屏幕控件中创建一个条形码控件barcode1 = gt_barcode_create(screen_home);// 设置控件坐标(引擎绘制时把控件区域重设为条码自然尺寸并左上锚定,// 模块宽/高变化后需重新 set_pos 居中——右侧面板调参时演示自动处理)gt_obj_set_pos(barcode1, 143, 128);// 设置条形码类型为 EAN-13(默认)gt_barcode_set_type(barcode1, GT_FAMILY_BARCODE_TYPE_EAN_13);// 设置条形码模块宽度为 2 个像素(右侧面板可调)gt_barcode_set_mode_w(barcode1, 2);// 设置条形码模块高度为 64 个像素(右侧面板可调)gt_barcode_set_mode_h(barcode1, 64);// 设置条形码内容gt_barcode_set_code_text(barcode1, "1234567890128");编码引擎实际使用的二维码控件(gt_qr_ext),内容为官网地址,模块大小与前景色实时可调。码图尺寸随内容/模块自适应(区域只增不减、码在区域内居中),属性变化后演示自动重新居中。
/* qrcode1 —— 手册 4.2 节示例(编码引擎实际控件为 gt_qr_ext) */// 在屏幕控件中创建一个二维码控件qrcode1 = gt_qr_ext_create(screen_home);// 设置控件坐标(码图尺寸随内容/模块大小自适应,内容变化后需重新 set_pos 居中——// 右侧面板调参时演示自动处理)gt_obj_set_pos(qrcode1, 172, 92);// 设置二维码内容(官网地址)gt_qr_ext_set_text_by_len(qrcode1, "https://www.hmi.gaotongfont.cn/", 29);// 设置二维码码点颜色为黑色(右侧面板可调)gt_qr_ext_set_module_color(qrcode1, gt_color_hex(0x000000));// 设置二维码码点模块大小为 4 像素(右侧面板可调)gt_qr_ext_set_module_size(qrcode1, 4);// 设置二维码四周留白为 2 像素(注:wasm 构建实际绘制自适应控件区域,留白无视觉差异)gt_qr_ext_set_margin(qrcode1, 2);滑窗控件提供多页横滑容器(每页可放任意子控件),底部带页指示条。面板可切换当前页。
/* view_pager1 —— 摘自手册 4.3 节 */// 在 screen_home 屏幕控件中创建一个滑窗控件view_pager1 = gt_view_pager_create(screen_home);// 设置滑窗控件的位置为(60, 50)gt_obj_set_pos(view_pager1, 60, 50);// 设置滑窗控件的尺寸为(宽度 360 高度 220)gt_obj_set_size(view_pager1, 360, 220);// 设置可视窗口尺寸(创建后、添加页之前调用)gt_view_pager_set_window_size(view_pager1, 360, 220);// 添加三页,并把标签放进每一页uint8_t idx = gt_view_pager_add_fragment(view_pager1);label1 = gt_label_create(view_pager1);gt_label_set_text(label1, "第一页");gt_view_pager_fragment_add_widget(view_pager1, idx, label1);// 滚动到指定页(索引从 0 开始)gt_view_pager_scroll_to_fragment(view_pager1, 1);水平线 / 垂直线 / 对角线三种形态,线宽、颜色、端点样式实时可调。端点坐标为屏幕绝对坐标(引擎按端点反算控件区域),三种形态均居中于画布。
/* line1 —— 摘自手册 4.4 节示例(端点坐标按引擎实际语义标注) */// 在 screen_home 屏幕控件中创建一个直线控件line1 = gt_line_create(screen_home);// 设置起点坐标——屏幕绝对坐标(引擎按端点反算控件区域;// 注:手册本节"相对控件左上角"的说明与引擎实际行为不符,已实测确认)gt_line_set_start_point(line1, 150, 230);// 设置终点坐标(屏幕绝对坐标,右侧面板可切换水平/垂直/对角三种形态)gt_line_set_end_point(line1, 330, 90);// 设置线宽为 4 像素(右侧面板可调)gt_line_set_line_width(line1, 4);// 设置线条颜色为红色(右侧面板可调)gt_line_set_color(line1, gt_color_hex(0xFF0000));// 设置端点样式为圆形(右侧面板可切换方形)gt_line_set_brush_type(line1, GT_BRUSH_TYPE_ROUND);表格控件按"表头定列数 + 内容逐格填充"的方式构建,添加完必须调用 gt_table_refresh 计算行列尺寸。面板可切表头加粗与字色。
/* table1 —— 摘自手册 4.5 节 */// 在 screen_home 屏幕控件中创建一个表格控件table1 = gt_table_create(screen_home);// 设置表格控件的位置为(40, 60)gt_obj_set_pos(table1, 40, 60);// 设置表格控件的尺寸为(宽度 400 高度 200)gt_obj_set_size(table1, 400, 200);// 设置字体大小为 16ptgt_table_set_font_size(table1, 16);// 添加表头单元格(确定列数),align 为左中对齐gt_table_add_header_text_by_len(table1, "状态", 6, GT_ALIGN_LEFT_MID);gt_table_add_header_text_by_len(table1, "大小", 6, GT_ALIGN_LEFT_MID);gt_table_add_header_text_by_len(table1, "默认", 6, GT_ALIGN_LEFT_MID);// 添加内容单元格(逐行逐列填充)gt_table_add_content_text_by_len(table1, "启停", 6);gt_table_add_content_text_by_len(table1, "大小", 6);// 【必须】添加完后刷新,计算每列的最大宽高gt_table_refresh(table1);// 表头加粗gt_table_set_header_bold(table1, true);三个单选框放在分组控件中——同组互斥,选中一个其余自动取消(互斥只在 gt_group 父容器内生效)。文字标签需字库子集,属第二批。
/* radio1 —— 摘自手册 5.2 节示例(文本行需字库,此处略) */// 创建分组控件(单选框的互斥只在分组内生效)group1 = gt_group_create(screen_home);// 在分组 1 控件中创建一个单选框控件radio1 = gt_radio_create(group1);// 设置单选框控件位置为 (170, 104) —— 屏幕绝对坐标,分组不产生偏移gt_obj_set_pos(radio1, 170, 104);// 设置单选框控件的尺寸为(宽度 140 高度 28)gt_obj_set_size(radio1, 140, 28);// 设置圆圈颜色为灰色(默认白色,浅色背景上不可见)gt_obj_set_bgcolor(radio1, gt_color_hex(0x909399));// 设置选中色为蓝色(选中后圆圈内芯的颜色)gt_radio_set_selected_color(radio1, gt_color_hex(0x0F97FF));// 设置单选框控件文本为 "one"(需字库支持)gt_radio_set_text(radio1, "one");// 同组再创建两个单选框(同组互斥)radio2 = gt_radio_create(group1);gt_obj_set_pos(radio2, 170, 152);gt_obj_set_size(radio2, 140, 28);radio3 = gt_radio_create(group1);gt_obj_set_pos(radio3, 170, 200);gt_obj_set_size(radio3, 140, 28);// 选中 radio2 —— 同组其余单选框自动取消选中gt_radio_set_selected(radio2);三个复选框各自独立勾选/取消(不互斥)。文字标签需字库子集,属第二批。
/* cbox1 —— 摘自手册 5.3 节示例(文本行需字库,此处略) */// 创建分组容器(复选框不互斥,分组仅用于逻辑分组)group2 = gt_group_create(screen_home);// 在分组 2 控件中创建一个复选框控件cbox1 = gt_checkbox_create(group2);// 设置复选框位置为 (170, 104) —— 屏幕绝对坐标,分组不产生偏移gt_obj_set_pos(cbox1, 170, 104);// 设置复选框控件的尺寸为(宽度 140 高度 28)gt_obj_set_size(cbox1, 140, 28);// 设置复选框文本为 "A"(需字库支持)gt_checkbox_set_text(cbox1, "A");// 设置复选框状态为选中(0 = 未选中)gt_obj_set_state(cbox1, 1);// 同组再创建两个复选框(各自独立勾选)cbox2 = gt_checkbox_create(group2);gt_obj_set_pos(cbox2, 170, 152);gt_obj_set_size(cbox2, 140, 28);cbox3 = gt_checkbox_create(group2);gt_obj_set_pos(cbox3, 170, 200);gt_obj_set_size(cbox3, 140, 28);与手册 5.4 节示例一致:起止范围、当前值、方向、颜色实时可调。R2L 方向为从右向左填充;"当前值"滑条范围跟随起止范围同步。
/* bar1 —— 摘自手册 5.4 节示例 */// 在 screen_home 屏幕控件中创建一个进度条控件bar1 = gt_progress_bar_create(screen_home);// 设置进度条的位置为 (100, 145)gt_obj_set_pos(bar1, 100, 145);// 设置进度条的尺寸为(宽度 280 高度 30)gt_obj_set_size(bar1, 280, 30);// 设置进度条的起始值为 0,结束值为 100//(右侧面板可切 0~360 / -50~50,"当前值"滑条范围随之同步)gt_progress_bar_set_start_end(bar1, 0, 100);// 设置进度条的当前值为 30(右侧面板可调)gt_progress_bar_set_pos(bar1, 30);// 设置进度条的活跃颜色为 0x00ff00 的绿色gt_progress_bar_set_color_act(bar1, gt_color_hex(0x00ff00));// 设置进度条的不活跃颜色为 0x808080 的灰色gt_progress_bar_set_color_ina(bar1, gt_color_hex(0x808080));// 设置进度条的方向为从左到右(右侧面板可切 R2L:从右向左填充)gt_progress_bar_set_dir(bar1, GT_BAR_DIR_HOR_L2R);与手册 5.5 节示例一致:调面板参数或直接拖画布上的滑条,实时观察渲染。GT_BAR_DIR 四方向即时切换(横向 236×40 / 竖向 24×300)。
/* slider1 —— 摘自手册 5.5 节示例 */// 在 screen_home 屏幕控件中创建一个滑动条控件slider1 = gt_slider_create(screen_home);// 设置滑动条的位置为 (120, 140)(演示画布视觉居中;手册示例为 130)gt_obj_set_pos(slider1, 120, 140);// 设置滑动条的尺寸为(宽度 236 高度 40)gt_obj_set_size(slider1, 236, 40);// 设置滑动条的起始值为 0,结束值为 100gt_slider_set_start_end(slider1, 0, 100);// 设置滑动条的当前值为 50gt_slider_set_pos(slider1, 50);// 设置滑动条的活跃颜色为 0x409eff 蓝色gt_slider_set_color_act(slider1, gt_color_hex(0x409eff));// 设置滑动条的不活跃颜色为 0xebeef5 浅灰色gt_slider_set_color_ina(slider1, gt_color_hex(0xebeef5));// 设置滑动条的滑动方向为从左到右(右侧面板可切换四种方向)gt_slider_set_dir(slider1, GT_BAR_DIR_HOR_L2R);与手册 5.6 节一致:列表项逐条添加(演示为纯文本项),项背景/分割线/边框/字体颜色实时可调。画布内可上下滑动选择。
/* listv1 —— 摘自手册 5.6 节示例(图标项行需资源包,此处为纯文本项) */// 在 screen_home 屏幕控件中创建一个列表控件listv1 = gt_listview_create(screen_home);// 设置列表的位置为(170, 55)gt_obj_set_pos(listv1, 170, 55);// 设置列表的尺寸为(宽度 140 高度 210)gt_obj_set_size(listv1, 140, 210);// 设置列表字体颜色为深灰gt_listview_set_font_color(listv1, gt_color_hex(0x2c3e50));// 设置列表字体尺寸为 18 点gt_listview_set_font_size(listv1, 18);// 设置列表每项高度为 40(⚠ 须在添加项之前设置)gt_listview_set_item_height(listv1, 40);// 设置列表边框颜色为 0xc7c7c7 灰色(右侧面板可调)gt_listview_set_border_color(listv1, gt_color_hex(0xc7c7c7));// 设置列表每项背景颜色(右侧面板可调)gt_listview_set_item_bg_color(listv1, gt_color_hex(0xf5f7fa));// 显示每项背景gt_listview_show_item_bg(listv1, true);// 设置列表每项圆角半径为 8gt_listview_set_item_radius(listv1, 8);// 逐条添加列表项(画布内可滑动选择)gt_listview_add_item(listv1, "按钮");gt_listview_add_item(listv1, "开关");gt_listview_add_item(listv1, "滑条");gt_listview_add_item(listv1, "进度条");与手册 5.7 节一致:选项经 \n 分隔一次设置,可视项数、选中项、选中背景色实时可调。画布内可按住上下滚动。
/* roller1 —— 摘自手册 5.7 节示例 */// 在 screen_home 屏幕控件中创建一个滚轮控件roller1 = gt_roller_create(screen_home);// 设置滚轮的位置为 (175, 65)gt_obj_set_pos(roller1, 175, 65);// 设置滚轮的尺寸为(宽度 130 高度 190)gt_obj_set_size(roller1, 130, 190);// 设置滚轮的字体颜色为深灰gt_roller_set_font_color(roller1, gt_color_hex(0x2c3e50));// 设置字体的大小为 18gt_roller_set_font_size(roller1, 18);// 设置滚轮显示元素数量(右侧面板可调)gt_roller_set_display_item_count(roller1, 3);// 设置滚轮选项(\n 分隔;右侧面板可切换选项集)gt_roller_set_options(roller1, "标签\n列表\n滚轮\n时钟\n按钮\n开关", GT_ROLLER_MODE_NORMAL);// 设置滚轮当前选中第 2 项(画布内可拖动滚动)gt_roller_set_selected(roller1, 1);// 设置选中项背景颜色(右侧面板可调)gt_roller_set_select_bgcolor(roller1, gt_color_hex(0x00a8ff));分组控件将多个子控件组织为一个逻辑组(常配合单选/复选做互斥管理)。实测子对象坐标为屏幕绝对坐标,分组本身不平移子对象。
/* group1 —— 摘自手册 5.1 节 */// 在 screen_home 屏幕控件中创建一个分组控件group1 = gt_group_create(screen_home);// 设置分组控件的位置为(90, 80)gt_obj_set_pos(group1, 90, 80);// 设置分组控件的尺寸为(宽度 300 高度 160)gt_obj_set_size(group1, 300, 160);// 向分组内添加子控件(坐标为屏幕绝对坐标)label1 = gt_label_create(group1);gt_obj_set_pos(label1, 120, 110);gt_label_set_text(label1, "单选演示");// 允许调整组内子对象大小gt_group_set_resized(group1, true);下拉框控件提供选项列表,点击展开后选择。面板可换选项集、改行高与选中项反色(换选项集走销毁重建:clear+add 在本构建不重绘)。
/* select1 —— 摘自手册 5.8 节 */// 在 screen_home 屏幕控件中创建一个下拉框控件select1 = gt_select_create(screen_home);// 设置下拉框控件的位置为(150, 40)gt_obj_set_pos(select1, 150, 40);// 设置下拉框控件的尺寸为(宽度 180 高度 46)gt_obj_set_size(select1, 180, 46);// 设置字体大小为 16ptgt_select_set_font_size(select1, 16);// 设置字体颜色gt_select_set_font_color(select1, gt_color_hex(0x2C3E50));// 设置每个选项的高度为 40gt_select_set_option_height(select1, 40);// 添加下拉选项gt_select_add_option(select1, "单选");gt_select_add_option(select1, "复选");gt_select_add_option(select1, "开关");// 选中项字体反色gt_select_set_selected_anti_font(select1, true);矩形的圆角、边框、填充/描边模式、背景色实时可调。
/* rect1 —— 摘自手册 6.1 节示例 */// 在 screen_home 屏幕控件中创建一个矩形控件rect1 = gt_rect_create(screen_home);// 设置矩形的位置为 (140, 80)gt_obj_set_pos(rect1, 140, 80);// 设置矩形的尺寸为(宽度 200 高度 160)gt_obj_set_size(rect1, 200, 160);// 设置四端角的半径为 12(右侧面板可调)gt_rect_set_radius(rect1, 12);// 设置矩形的背景颜色为 0x409eff 蓝色gt_rect_set_bg_color(rect1, gt_color_hex(0x409eff));// 设置矩形边框颜色为 0xe6a23c 橙色(边框宽度 > 0 时可见)gt_rect_set_color_border(rect1, gt_color_hex(0xe6a23c));// 设置矩形为填充模式(右侧面板可切换描边)gt_rect_set_fill(rect1, 1);// 设置矩形边框宽度为 0 即无边框(右侧面板可调)gt_rect_set_border(rect1, 0);对话框控件以顶层弹层呈现(无需父容器),show/close 控制显示与释放。注意:close 会释放控件,再次显示需重新创建;引擎销毁对象后不回填背景,故在对话框区域预置一块底板矩形用于关闭时盖掉残影。
/* dialog1 —— 摘自手册 6.2 节 */// 创建对话框(参数:是否显示右上角关闭按钮)dialog1 = gt_dialog_create(true);// 设置对话框的位置为(100, 70)gt_obj_set_pos(dialog1, 100, 70);// 设置对话框的尺寸为(宽度 280 高度 180)gt_obj_set_size(dialog1, 280, 180);// 设置对话框的背景颜色为白色gt_dialog_set_bgcolor(dialog1, gt_color_hex(0xFFFFFF));// 设置对话框的边框颜色gt_dialog_set_border_color(dialog1, gt_color_hex(0x3580BB));// 设置边框宽度为 2、圆角半径为 10gt_dialog_set_border_width(dialog1, 2);gt_dialog_set_border_radius(dialog1, 10);// 设置对话框内容并显示gt_dialog_set_content(dialog1, "提示消息");gt_dialog_show(dialog1);// 关闭并释放对话框(再次显示需重新创建)// gt_dialog_close(dialog1);动图控件:内部定时器逐帧解码播放,REPEAT/ONCE 两种模式。真机经资源包 set_src(".:anim.gif") 取文件;官网演示无资源包,经 MODE 2 raw 直接注入 GIF 文件字节(6 帧 300ms 循环动画)。
/* gif —— 摘自手册 6.3 节 */// 创建 GIF 控件gt_obj_st * gif1 = gt_gif_create(screen_home);// 设置位置 (200, 120) 与尺寸 80 x 80gt_obj_set_pos(gif1, 200, 120);gt_obj_set_size(gif1, 80, 80);// 设置 GIF 文件(资源包路径)gt_gif_set_src(gif1, ".:anim.gif");// 设置循环播放模式(默认 REPEAT)gt_gif_set_mode(gif1, GT_GIF_MODE_REPEAT);// 开始播放gt_gif_play(gif1);// 停止 / 重置// gt_gif_stop(gif1);// gt_gif_reset(gif1);状态栏是全局单例(无父容器、create 不返回对象),创建后横贯屏幕顶部:左侧可追加多个图标/文本槽,中间按比例占位一行文本。会遮挡所在屏幕顶部区域。
/* status_bar —— 摘自手册 6.4 节 */// 创建状态栏(全局单例,参数:是否显示背景)gt_status_bar_create(true);// 设置状态栏高度为 30gt_status_bar_set_height(30);// 设置左/中/右三区宽度比例为(30:40:30)gt_status_bar_set_scale(30, 40, 30);// 显示状态栏背景gt_status_bar_show_bg(true);// 设置背景颜色为深灰gt_status_bar_set_bg_color(gt_color_hex(0x252C36));// 左侧添加文本 "GT"(宽度 30)gt_status_bar_left_add_text("GT", 30);// 中间设置文本 "12:17"gt_status_bar_center_set_text("12:17");// 设置文本颜色为白色、字号 16gt_status_bar_set_font_color(gt_color_hex(0xFFFFFF));gt_status_bar_set_font_size(16);// 在当前屏幕隐藏 / 重新显示// gt_status_bar_set_hide(true);同一组数据可在散点/折线/曲线/柱状四种形态间切换(gt_line_st.type),支持双系列对照;默认开启 FIFO 滚动窗口(深度 20),旧点自动删除、曲线始终在图表范围内。
/* graph1 —— 手册 6.5 节示例(节选) */// 在 screen_home 屏幕控件中创建一个图表控件graph1 = gt_graphs_create(screen_home);// 设置图表控件的位置与尺寸gt_obj_set_pos(graph1, 40, 40);gt_obj_set_size(graph1, 400, 240);// 初始化坐标集(数据点 {x, y})gt_point_f_st graph1Rand0[] = { { 0, 30 }, { 25, 70 }, { 50, 55 }, { 75, 130 }, { 100, 110 }, { 125, 170 }};// 初始化坐标轴:水平/垂直范围 0~200,标尺步长 20gt_axis_st graph1Axis = { .hor = { .start = 0, .end = 200 }, .ver = { .start = 0, .end = 200 }, .hor_unit = 20, .ver_unit = 20, .scale = { .width = 2, .color = gt_color_hex(0x000000) },};gt_graphs_set_axis(graph1, &graph1Axis);// 添加折线系列(蓝色 2px),再逐点加入数据。// 系列形态由 gt_line_st.type 决定:GT_GRAPHS_TYPE_POINT(散点) / LINE(折线)// / CURVE(曲线) / BAR(柱状,line.width 即柱宽);opa < GT_OPA_MIN(3) 则该系列不绘制gt_graphs_add_series_line(graph1, &(gt_line_st){ .color = gt_color_hex(0x409eff), .opa = 255, .width = 2, .type = GT_GRAPHS_TYPE_LINE });for (unsigned i = 0; i < 6; i++) gt_graphs_series_add_point_by(graph1, 0, &graph1Rand0[i], NULL);// 多系列:再调一次 add_series_line(series_index 依次 0、1…),本页"双系列"即此gt_graphs_add_series_line(graph1, &(gt_line_st){ .color = gt_color_hex(0xe6a23c), .width = 2, .type = GT_GRAPHS_TYPE_BAR });// FIFO 模式:点数超过深度后自动删最旧的点(滚动波形)gt_graphs_set_fifo_max_points_count(graph1, 20);Flex 布局容器:子控件沿主轴按对齐方式与间距自动排列,无需逐个 set_pos。三个标签子项随右侧面板的间距 / 主轴对齐 / 排列方向即时重排。
/* layout —— 摘自手册 6.6 节 */// 创建自适应布局容器(普通 obj + container 配置)gt_obj_st * layout1 = gt_obj_create(screen_1);// 初始化布局配置结构体gt_obj_container_st layout1container = { .gap = 20, // 子项间距 .layout_type = GT_LAYOUT_TYPE_FLEX, // 自适应布局 .flex_direction = GT_LAYOUT_FLEX_DIR_ROW, // 主轴水平向右 .justify_content = GT_LAYOUT_JUSTIFY_CONTENT_CENTER, // 主轴居中对齐 .align_items = GT_LAYOUT_ALIGN_ITEMS_START, // 交叉轴顶部对齐};gt_layout_init(layout1, &layout1container);// 设置布局容器的位置与尺寸gt_obj_set_pos(layout1, 60, 80);gt_obj_set_size(layout1, 360, 160);// 子控件直接创建在布局容器下(注意:create 后需 update 触发排列)label1 = gt_label_create(layout1);gt_obj_set_size(label1, 60, 40);// … 再添加两个标签后触发布局重算gt_layout_update_core(layout1);// 运行期可动态改 gap / 对齐方式后再次 update_core 重排视频流播放壳:封面图 + 播放/暂停按钮 + 进度滑条。引擎交互设计为播放态只显封面,暂停(停止)态浮现进度滑条与暂停符号;播放/暂停经事件回调对接业务,进度由 set_current_time 驱动。
/* media_player —— 摘自手册 7.1 节 */// 创建播放器流控件gt_obj_st * mplayer = gt_media_player_create(screen_home);// 位置 (90, 60),尺寸 300 x 200gt_obj_set_pos(mplayer, 90, 60);gt_obj_set_size(mplayer, 300, 200);// 设置封面帧数据(真机为视频流首帧 / 资源图)gt_media_player_set_raw(mplayer, &cover_raw);// 设置总时长 240 秒、当前进度 60 秒(进度滑条同步)gt_media_player_set_total_time(mplayer, 240);gt_media_player_set_current_time(mplayer, 60);// 注册播放 / 暂停回调(对接业务播放器)gt_media_player_set_play_cb(mplayer, on_play, NULL);gt_media_player_set_stop_cb(mplayer, on_stop, NULL);// 注册进度条拖动回调(拖动跳转)gt_media_player_set_slider_change_cb(mplayer, on_seek, NULL);// 引擎交互:播放态只显封面;停止(暂停)态浮现进度滑条。// 真机由触摸释放事件切换,官网演示经事件注入:gt_event_send(mplayer, GT_EVENT_TYPE_INPUT_RELEASED, NULL);与手册 7.2 节示例一致:调当前值看活跃弧长度变化;画布内可直接拖动旋钮。
/* arc_obj —— 摘自手册 7.2 节示例 */// 在 screen_home 屏幕控件中创建一个圆弧控件gt_obj_st * arc_obj = gt_arc_create(screen_home);// 设置圆弧控件的位置与大小gt_obj_set_pos(arc_obj, 120, 40);gt_obj_set_size(arc_obj, 240, 240);// 设置活跃弧颜色为 0x03f6ff 青色gt_arc_set_act_color(arc_obj, gt_color_hex(0x03F6FF));// 将弧形指针设置为圆形(右侧面板可切换平头)gt_arc_set_rounded(arc_obj, true);// 设置背景弧宽度为 20(右侧面板可调)gt_arc_set_bg_width(arc_obj, 20);// 设置活跃弧宽度为 20gt_arc_set_act_width(arc_obj, 20);// 设置起始角度为 210,结束角度为 330gt_arc_set_bg_start_end_angle(arc_obj, 210, 330);// 设置圆弧的最小值为 0,最大值为 100gt_arc_set_value_min_max(arc_obj, 0, 100);// 设置圆弧当前值为 30(右侧面板可调,也可在画布上拖动)gt_arc_set_value(arc_obj, 30);// 设置圆弧步进单位为 1gt_arc_set_value_step(arc_obj, 1);// 设置圆弧控件旋钮宽为 30gt_arc_set_knob_width(arc_obj, 30);// 设置旋钮颜色(右侧面板可调)gt_arc_set_knob_color(arc_obj, gt_color_hex(0xFFFFFF));// 设置旋钮中心点直径——引擎与旋钮同心、同色绘制,直径需大于旋钮宽 30 才可见gt_arc_set_knob_dot(arc_obj, 36);月历视图:深色底白字,今日日期高亮,支持中文日期头与切换日期(换月自动翻页)。
/* calendar —— 摘自手册 7.3 节 */// 创建日历控件gt_obj_st * calendar_obj = gt_calendar_create(screen_home);// 位置 (89, 40),尺寸 289 x 240gt_obj_set_pos(calendar_obj, 89, 40);gt_obj_set_size(calendar_obj, 289, 240);// 深色背景 + 白色字体gt_obj_set_bgcolor(calendar_obj, gt_color_hex(0x252C36));gt_calendar_set_font_color(calendar_obj, gt_color_hex(0xFFFFFF));gt_calendar_set_font_size(calendar_obj, 16);// 显示中文日期头gt_calendar_set_cn(calendar_obj, true);// 设置当前日期(切换日期自动翻月)gt_calendar_set_today(calendar_obj, 2026, 10, 15);// 今日日期高亮颜色gt_calendar_set_font_color_to_today(calendar_obj, gt_color_hex(0xE69700));// 周末 / 其他月份日期颜色// gt_calendar_set_font_color_to_weekend(calendar_obj, gt_color_hex(0xFF0000));// gt_calendar_set_font_color_to_other_month(calendar_obj, gt_color_hex(0x777777));即时通讯式消息列表:接收(左侧白底)与发送(右侧绿底)气泡分行排列,支持文本与语音消息、气泡圆角与底色调色。
/* chat —— 摘自手册 7.4 节 */// 创建聊天框控件gt_obj_st * chat_obj = gt_chat_create(screen_home);// 位置 (60, 40),尺寸 360 x 240gt_obj_set_pos(chat_obj, 60, 40);gt_obj_set_size(chat_obj, 360, 240);// 聊天框背景 / 气泡圆角 / 消息间距gt_chat_set_bg_color(chat_obj, gt_color_hex(0xF5F5F5));gt_chat_set_msg_radius(chat_obj, 6);gt_chat_set_msg_space(chat_obj, 6, 6);// 发送消息绿底、接收消息白底,字体均黑色gt_chat_set_send_msg_bg_color(chat_obj, gt_color_hex(0x95EC69));gt_chat_set_received_msg_bg_color(chat_obj, gt_color_hex(0xFFFFFF));gt_chat_set_send_msg_font_color(chat_obj, gt_color_hex(0x000000));gt_chat_set_received_msg_font_color(chat_obj, gt_color_hex(0x000000));gt_chat_set_font_size(chat_obj, 16);// 添加文本消息(接收在左、发送在右)gt_chat_add_received_text_msg(chat_obj, "文本第二行");gt_chat_add_send_text_msg(chat_obj, "确定");// 添加一条 6 秒的语音消息gt_chat_add_received_voice_msg(chat_obj, 6);// 清除所有消息// gt_chat_clean_all_msg(chat_obj);轻量 Markdown 渲染:## 标题与 - 无序列表自动排版(标题行加粗放大)。set_text 必须在 set_size 之后调用。
/* markdown —— 摘自手册 7.5 节 */// 创建 MarkDown 解析控件gt_obj_st * markdown_obj = gt_markdown_create(screen_home);// 位置 (31, 28),尺寸 424 x 264,圆角 4,白底gt_obj_set_pos(markdown_obj, 31, 28);gt_obj_set_size(markdown_obj, 424, 264);gt_obj_set_radius(markdown_obj, 4);gt_obj_set_bgcolor(markdown_obj, gt_color_hex(0xFFFFFF));// 设置 Markdown 源文本(⚠ 必须在 set_size 之后调用,换行为 \r\n)const char * text = "## 标签控件\r\n\r\n文本第二行渲染验证。\r\n\r\n- 按钮开关\r\n- 滑条进度条";gt_markdown_set_text(markdown_obj, text, strlen(text));// 分级字体(h1/h2 大型、h3/h4 中型、h5/h6 与正文小型)gt_font_info_st large = { .family = demo_font, .size = 20 };gt_markdown_set_font_info_large(markdown_obj, &large);// 全局字体颜色gt_markdown_set_font_color(markdown_obj, gt_color_hex(0x2C3E50));与手册 7.6 节及工程原型 screen_spectrum 一致:双频谱同屏——左圆形(CIRCLE 环形弧条、四段闭环渐变、颜色左移)+ 右阶梯(STAIR 层间隙、不反射、三段渐变、颜色右移),COLOR_TYPE_NUMB 按线段序号渐变,引擎任务驱动随机跳动。
/* spectrum_obj —— 摘自手册 7.6 节 + 工程原型 screen_spectrum(480×320 适配) */// 深色屏底(原型同款)gt_obj_set_bgcolor(screen_home, gt_color_hex(0x10141A));// —— 左:圆形频谱 ——gt_obj_st * circle = gt_spectrum_create(screen_home);gt_obj_set_pos(circle, 25, 50);gt_obj_set_size(circle, 220, 220);gt_obj_show_bg(circle, false); // 不画自身背景gt_spectrum_set_type(circle, GT_SPECTRUM_TYPE_CIRCLE);gt_spectrum_set_period(circle, 220); // 动画间隔 ms(右侧面板可调)gt_spectrum_set_item_numb(circle, 28, 3); // 28 条弧,角间隙 3gt_spectrum_set_item_range(circle, 80, 9); // 环带厚度 80,9 个层级gt_spectrum_set_color_type(circle, GT_SPECTRUM_COLOR_TYPE_NUMB);gt_spectrum_add_gradient_color(circle, gt_color_hex(0x00D4FF), gt_color_hex(0x35E38A), 7);gt_spectrum_add_gradient_color(circle, gt_color_hex(0x35E38A), gt_color_hex(0xFFD166), 7);gt_spectrum_add_gradient_color(circle, gt_color_hex(0xFFD166), gt_color_hex(0xFF5C7A), 7);gt_spectrum_add_gradient_color(circle, gt_color_hex(0xFF5C7A), gt_color_hex(0x00D4FF), 7);gt_spectrum_set_color_move(circle, true, true, 1);// 颜色随动画左移gt_spectrum_play(circle);// —— 右:阶梯频谱 ——gt_obj_st * stair = gt_spectrum_create(screen_home);gt_obj_set_pos(stair, 255, 85);gt_obj_set_size(stair, 190, 150);gt_obj_show_bg(stair, false);gt_spectrum_set_type(stair, GT_SPECTRUM_TYPE_STAIR);gt_spectrum_set_period(stair, 220);gt_spectrum_set_item_numb(stair, 18, 3);gt_spectrum_set_item_range(stair, 150, 12); // 高度 150,12 个层级gt_spectrum_set_item_range_gap(stair, 2); // 层间隙 2(仅 STAIR)gt_spectrum_set_item_range_reflect(stair, false); // 不上下反射(仅 STAIR,右侧面板可切)gt_spectrum_set_color_type(stair, GT_SPECTRUM_COLOR_TYPE_NUMB);gt_spectrum_add_gradient_color(stair, gt_color_hex(0x00D4FF), gt_color_hex(0x35E38A), 6);gt_spectrum_add_gradient_color(stair, gt_color_hex(0x35E38A), gt_color_hex(0xFFD166), 6);gt_spectrum_add_gradient_color(stair, gt_color_hex(0xFFD166), gt_color_hex(0xFF5C7A), 6);gt_spectrum_set_color_move(stair, true, false, 1);// 颜色随动画右移gt_spectrum_play(stair);与手册 7.7 节一致:首线加关键点定义波形,move_copy 按首行模式复制多条渐变色线条,引擎任务驱动波动刷新。
/* sp_line1 —— 摘自手册 7.7 节示例(关键点表节选) */// 在 screen_home 屏幕控件中创建一个频谱线控件gt_obj_st * sp_line1 = gt_spectrum_line_create(screen_home);// 设置频谱线控件的位置为 (40, 130)gt_obj_set_pos(sp_line1, 40, 130);// 设置频谱线控件的大小为 (400, 60)gt_obj_set_size(sp_line1, 400, 60);// 添加首条线条:宽度 2,橙色(返回首线 index)gt_size_t line_index = gt_spectrum_line_add(sp_line1, 2, gt_color_hex(0xe6a23c));// 关键点:绘制 Y 取自发生器值,故 gen.min/max 与 point.y 同为屏幕绝对坐标// (手册 7.7 的 _sp1_point_set_offset 即按 area 偏移同步平移 min/max、cur_val=point.y)static gt_sp_point_st _pts[] = { { .point = { 45, 158 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 158, .dir = 1 } }, { .point = { 115, 142 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 142, .dir = -1 } }, { .point = { 190, 172 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 172, .dir = 1 } }, { .point = { 265, 145 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 145, .dir = -1 } }, { .point = { 340, 168 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 168, .dir = 1 } }, { .point = { 432, 155 }, .gen = { .min_val = 140, .max_val = 180, .step = 3, .cur_val = 155, .dir = -1 } },};for (unsigned i = 0; i < 6; i++) gt_spectrum_line_add_point(sp_line1, line_index, _pts[i]);// 按首行移动模式复制 16 条线,渐变色 蓝 → 绿gt_spectrum_line_move_copy(sp_line1, 16, gt_color_hex(0x1ba1fa), gt_color_hex(0x67c23a));// 设置刷新周期为 100ms(右侧面板可调)gt_spectrum_line_set_period(sp_line1, 100);// 开始动画(右侧面板可启停/切波形)gt_spectrum_line_play(sp_line1);Toast 以全局函数调用弹出(非控件创建),消息、颜色、时长、位置由 gt_toast_param_st 结构体一次传入,超时自动关闭。
/* toast —— 摘自手册 7.8 节 */// 定义弹窗提示词参数结构体gt_toast_param_st toast = { // 设置弹窗提示词背景颜色为蓝色 .bg_color = gt_color_hex(0x3580BB), // 设置弹窗提示词字体颜色为白色 .font_color = gt_color_white(), // 设置弹窗提示词显示时间为 5000ms .duration = 5000, // 设置弹窗提示词文本 .message = "提示消息", // 设置弹窗提示词显示位置为顶部 .position = GT_TOAST_POS_TOP,};// 显示弹窗提示词gt_toast(&toast);// 立即关闭// gt_toast_close();歌词滚动控件:每行绑定时间戳(ms),start 启动内部定时器后随播放进度自动切换高亮行;选中行与普通行分色显示。
/* lrc —— 摘自手册 7.9 节 */// 创建歌词控件gt_obj_st * lrc_obj = gt_lrc_create(screen_home);// 位置 (40, 90),尺寸 400 x 160gt_obj_set_pos(lrc_obj, 40, 90);gt_obj_set_size(lrc_obj, 400, 160);// 普通行灰色、当前行蓝色gt_lrc_set_font_color(lrc_obj, gt_color_hex(0x666666));gt_lrc_set_select_color(lrc_obj, gt_color_hex(0x0097E6));// 添加歌词行(第二个参数为该行时间戳,单位 ms)gt_lrc_add_text(lrc_obj, 7000, "高通字体引擎");gt_lrc_add_text(lrc_obj, 4000, "中英混排演示");gt_lrc_add_text(lrc_obj, 6000, "渲染验证");// 设置当前选中行下标并启动内部定时器(随时间自动切换高亮行)gt_lrc_set_select_index(lrc_obj, 0);gt_lrc_start(lrc_obj);// 暂停 / 恢复 / 校正时间// gt_lrc_paused(lrc_obj);// gt_lrc_resume(lrc_obj);// gt_lrc_correction_time(lrc_obj, 1000);艺术字控件不经过字体渲染:每个字符编码绑定一张彩色位图,set_text 按字符逐图拼接。真机经资源包 add_item(".:gao.bmp") 绑定;官网演示注入渐变像素图("高/通/字"三张 40×40 字模图)。
/* wordart —— 摘自手册 7.10 节 */// 创建艺术字控件gt_obj_st * wordart1 = gt_wordart_create(screen_home);// 位置 (100, 130),尺寸 280 x 60gt_obj_set_pos(wordart1, 100, 130);gt_obj_set_size(wordart1, 280, 60);// 初始化最大字符映射数gt_wordart_items_init(wordart1, 4);// 绑定字符编码 → 图片('高'=0x9AD8,资源包路径)gt_wordart_add_item(wordart1, 0x9AD8, ".:gao.bmp");gt_wordart_add_item(wordart1, 0x901A, ".:tong.bmp");gt_wordart_add_item(wordart1, 0x5B57, ".:zi.bmp");// 设置字符间距gt_wordart_set_space(wordart1, 8, 0);// 设置文本:按字符逐图拼接显示gt_wordart_set_text(wordart1, "高通字");