|
327| 0
|
[K10教程] Lopaka一个让你告别 LCD 像素手算的浏览器端 UI 设计工具 |

前言行空板 K10,ESP32-S3 的那块板子,上面带一块 ILI9341 的 240×320 彩色屏幕。我想在上面画个界面——一个天气显示,几个图标,几行字。 经常搞 LCD 开发的小伙伴应该深有体会,最让人头疼的就三件事:锚点定位、布局摆放、图片取模。 先说定位。想在屏幕正中央放个图标?你得先算中心点坐标 (120, 160),再算图标相对于中心的偏移。图标宽 32 像素,那左上角就是 (104, 144)。图标下面要放一行温度文字?再算——Y 坐标加上图标高度再加间距……听起来都是小学数学。但一写代码就发现不对劲了,你以为“往上两个像素”,写出来变成了往下两个。改了一下,图标对了,文字又歪了。再改,文字对了,背景框又跑到屏幕外面去了。 再说布局。LCD 上没有 CSS,没有 flexbox,什么都没有。想让几个元素对齐、居中、等间距分布?全靠手动计算坐标。而且你没办法实时看到效果——写代码 → 编译 → 烧录 → 等十几二十秒 → 发现不对 → 改一行 → 再来一遍。一个界面来回烧录十几次,就为了把东西摆正。 还有图片。想把一张 PNG 放到屏幕上?先得用取模工具转成 C 数组,一个像素一个像素地抠。换个尺寸、换个颜色格式,再来一遍。 更抓狂的是,K10 默认是横屏 (320×240),我想用竖屏 (240×320)。一换方向,所有坐标全得重算,图片数据全得重取。X 变 Y,Y 变 X,脑子里转了三圈,写出来的东西还是歪的。 Lopaka 是什么Lopaka 是一个开源浏览器端图形编辑器,专为小屏幕(OLED、TFT、电子墨水屏)绘制界面而设计。U8g2、Adafruit GFX、TFT_eSPI、LovyanGFX、LVGL 这些主流嵌入式图形库它都支持。 用法也很简单:通过拖拽绘制出想要的界面,点击导出,即可生成对应的 C 代码。将其复制到你的项目中,编译并烧录,屏幕上就会显示你刚才绘制的界面。 部署Lopaka 有在线版,打开就能用。不过我习惯用 Docker 自部署,两条命令搞定:
浏览器打开 实操:用 K10 走一遍完整流程光说功能太抽象。我拿行空板 K10(ESP32-S3 + ILI9341 240×320 TFT)给大家走一遍完整流程。 第一示例:文字输入打开 Lopaka,点 library,选择编程要用的库。点“display”,选择 LCD 的屏幕尺寸,行空板 K10 默认是横屏,320×240。如果要竖屏就自定义输入 240×320。点“background”,选择底色。
接下来是关键的配置步骤:
第二示例:彩色图片转化
这才是重点。终于不用手算坐标了。 我画一个简单的天气界面:
要注意勾选各个功能项和字库。 最关键的就是定位。在画布上,你用鼠标把每个元素精确拖到你想要的位置。图标应该在左上角?拖过去。温度数字太靠下了?拉上来。画布上实时显示的,就是最终在 K10 屏幕上看到的样子。 你终于不用靠脑子模拟了。你看到的就是你得到的。 第三步:导出代码位置调满意了,点右上角 Code,选 LovyanGFX,代码啪地一下就出来了。坐标、颜色、形状,全是自动算好的。 这里有个重要细节——如果你用了内置的动画图标,复制代码之前,记得先点那个链接把图标文件下载下来,放到你的 Arduino 项目文件夹里。不然编译会报找不到文件。LovyanGFXa 还支持 Adafruit GFX 作为导出目标。如果你用的是彩色 TFT 屏 + Adafruit 库,新建项目时选 Adafruit GFX,它会自动调用 第四步:集成到 Arduino 项目代码拿到了,但别急着粘贴。 你需要先在 Arduino IDE 里准备一个能跑的基础项目——导入语句、屏幕声明、初始化代码,先确保屏幕能正常亮起来显示文字。确认硬件没问题了,再把 Lopaka 生成的 UI 代码嵌进去。 我第一次偷懒没做这一步,直接粘代码,编译报了八百个错,查了半天才发现是初始化没写对。所以,先跑通基础,再加 UI。 Lopaka 导出用的是 AdafruitGFX API(对象名 编译,烧录。 K10 的屏幕亮起来。 天气图标在左上角,城市名在顶栏居中,温度数字端端正正地显示在屏幕中央。一次烧录成功。 位置不需要调。锚点不需要算。 进阶:局部刷新Lopaka 导出的代码默认是全屏重绘,每次更新都调用
|
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed