3、第一个TouchGFX项目:创建空白项目、屏幕与画布基础、模拟器运行与调试
说实话,很多初学者一上来就急着往画布上堆按钮、拖图片,结果项目结构乱成一锅粥,后面改需求时欲哭无泪。我刚开始用TouchGFX时也犯过这毛病——总觉得「先跑起来再说」,后来被一个客户需求变更折腾了整整两天,才老老实实回来补基础。
这一章,咱们就稳扎稳打,从零创建一个空白项目。你跟着我走一遍,后面30章都会轻松很多。
3.1 创建空白项目——别选错模板
打开TouchGFX Designer,点击「Create New Project」。这里有个坑——很多人直接选「Empty UI Project」,结果发现连个屏幕都没有,一脸懵。
我个人习惯选「Stampe」模板。为什么?因为它自带一个空白屏幕和基础的画布配置,省去你手动配一堆参数的时间。你想想看,咱们的目标是学界面设计,不是学配环境。
创建完成后,你会看到这样一个界面:
- 左侧是组件面板(Widgets)
- 中间是画布(Canvas)
- 右侧是属性面板(Properties)
- 底部是时间轴(Timeline)
嗯,这里要注意——画布默认是480x272像素,这是很多嵌入式屏幕的经典分辨率。如果你用的屏幕不一样,记得在项目设置里改。
3.2 屏幕与画布基础——搞清楚谁是谁
很多新手搞混「屏幕」和「画布」的概念。我打个比方:
- 屏幕(Screen) 就像一栋楼里的楼层。你可以在不同楼层之间切换。
- 画布(Canvas) 就是每个楼层里的房间布局。你往里面放什么家具(控件),用户就看到什么。
在TouchGFX里,一个项目可以有多个Screen,每个Screen里可以有一个或多个Canvas。但大多数情况下,一个Screen配一个Canvas就够了。
双击左侧的「Screen1」,你会看到画布上出现一个白色矩形区域。这就是你的第一个屏幕。右键点击它,选择「Properties」,可以设置背景色、是否启用滚动等。
我个人习惯先把背景色设成浅灰色(#F0F0F0),这样后面放控件时对比明显,不容易看花眼。
3.3 模拟器运行与调试——先别急着烧录
代码写完了?别急着往板子上烧。TouchGFX的模拟器非常强大,我建议你养成「先模拟、后烧录」的习惯。
点击工具栏上的「Run」按钮(绿色三角形),TouchGFX会自动编译并启动模拟器。第一次编译可能会慢一点,别急,去倒杯水。
模拟器启动后,你会看到一个窗口,里面就是你刚才设计的界面。你可以用鼠标点击按钮、滑动滑块——就跟在真机上一样。
调试时,我常用这几个技巧:
- 按F5刷新: 修改代码后不用重新编译,直接按F5刷新模拟器,省时间。
- 查看日志: 模拟器底部有个「Log」面板,所有printf输出都在那里。我习惯在关键函数里加printf,方便追踪流程。
- 断点调试: 如果你用IDE(比如STM32CubeIDE),可以直接在C++代码里打断点。模拟器会停在断点处,方便你查变量值。
3.4 知识体系总览——一张图看懂本章
下面这张图总结了本章的核心逻辑。你跟着它走,就不会迷路。
3.5 常见问题与避坑
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 模拟器启动后黑屏 | 画布背景色为黑色,或屏幕配置错误 | 检查Screen的Background Color属性 |
| 编译报错:找不到头文件 | 项目路径包含中文或空格 | 把项目移到纯英文路径下 |
| 模拟器里控件不响应点击 | 控件被其他元素遮挡 | 检查控件的Z-order顺序 |
| 烧录到板子后花屏 | 屏幕驱动时序不对 | 核对LTDC或FMC配置参数 |
3.6 小结
这一章咱们走完了从创建空白项目到模拟器调试的完整流程。你掌握了:
- 如何选择正确的项目模板
- 屏幕与画布的分工逻辑
- 模拟器的运行与调试技巧
- 常见问题的排查方法
说白了,这些就是TouchGFX开发的「基本功」。后面所有复杂的界面、动画、交互,都是在这个基础上搭建的。你把这章吃透了,后面的路会顺很多。