` 定时滚动显示图形测试 1. 设计目的在规定时间内滚动显示指定的图片信息。 2. 基本程序实现1)创建一个基本程序框架 如图,利用向导创建一个基本程序,平台类型选择“X3”。 程序创建完成后,在基本显示界面上添加显示控件。 2)添加显示窗口 基本思路是,创建一个窗口控件,通过修改窗口背景来实现切换功能。 如图所示,在基础工程上增加“窗口”控件,在右侧的属性栏中,选择背景图,点击右侧的“…”图标,打开图像资源管理。 如下图所示,点击“import”导入所有想要显示的图片资源,我这里添加了分辨率为480*272的多张图片。这些内容会在工程的resources目录中找到。 3)增加定时器功能 在mainLogic.cc文件中,如下代码所示 /** * 注册定时器 * 填充数组用于注册定时器 * 注意:id不能重复 */ static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[]= { {0, 1000}, //定时器id=0, 时间间隔1秒 //{1, 1000}, }; 开放一个定时器,周期为1s,id为0 。 4)图片切换 为了实现定时滚动的功能,我增加了一个变量和一个宏定义 #defineMAX_PIC_COUNT 38 static intSelect_PicCount = 0; 用来指示当前选中的图片,和最大图片数。 在onUI_Timer函数中,增加如下代码。 /** * 定时器触发函数 * 不建议在此函数中写耗时操作,否则将影响UI刷新 * 参数: id * 当前所触发定时器的id,与注册时的id相同 * 返回值: true * 继续运行当前定时器 * false * 停止运行当前定时器 */ static bool onUI_Timer(int id){ char str[100]; switch (id) { case 0: Select_PicCount++; if(Select_PicCount > MAX_PIC_COUNT) Select_PicCount= 0; sprintf(str,"/mnt/extsd/ui/%d.jpg",Select_PicCount); mWindow1Ptr->setBackgroundPic(str); break; default: break; } return true; } 3. 设计中遇到问题总结1)去哪里找到图片 这个问题给我不小的困惑,实际在我们工程中的resources目录下的所有内容,在我们执行“下载调试”命令的时候,会随着整个工程一起复制x3的系统上来,其目录为: /mnt/extsd/ui 并不是真的需要我们插个有图片资源的tf卡在插槽里面。 2)为什么图片名称是数字 图片切换的时候采用数字最为文件名,程序处理起来比较方便,图片的索引就是文件名。如果在工程应用的话,我们应该以数字为索引,去列表中查询对应的图形文件名称,便于管理和后期维护。 4. 实际效果演示
实测达到了设计目的,完成了滚动显示功能
`
|