0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用BinaryFont进行字体动态更新

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-08-03 09:30 次阅读

1、引言

自从 2013 年第一款侧重于 GUI 应用的 STM32F429x【内嵌 Chrom-ART 图形加速和 LTDC 控制器】开始,ST 就为大 家提供了 STM32MCU + X-Cube-TouchGFX 一站式 GUI 开发平台。越来越多的客户使用 STM32 + TouchGFX 开发智能手表/智能家居控制面板等嵌入式设备。

在嵌入式GUI开发的应用中,设备厂家希望自己的设备支持用户根据自己喜好来定义所选用的字体类型。从技术上讲,可以将字体和应用程序分离开,这样可以在嵌入式设备有限的存储空间上根据需要更新和升级字体的类型。

2、TouchGFX Binary font 介绍

TouchGFX为客户提供了二进制字体(Binary Font)的方法,这些字体没有链接到应用程序中,而是作为文件与应用程序分开存储,这些文件在运行时由应用程序加载并提供给TouchGFX。

2b43dc4e-12c4-11ed-ba43-dac502259ad0.png

当应用程序加载了二进制字体后,可以在TouchGFX字体系统中安装二进制字体。这里内置的 Font2 被应用程序加载的Binaryfont 替换。此后,TouchGFX 不再使用链接的Font2,使用自定义的Binary font进行显示。

下面例程展示了如何使用BinaryFont进行字体动态更新。

3、演示例程实现过程

3.1.打开 TouchGFX Designer 4.18.0

- TouchGFX4.18.0 (本文使用 4.18.0 举例,其他版本操作过程相同)

环境安装请参考网址: https://support.touchgfx.com/docs/introduction/installation

- VSCode

3.2.打开 TouchGFX Designer 4.18.0

选择 STM32F746DK 探索板,生成工程 :

2b953288-12c4-11ed-ba43-dac502259ad0.png

3.3 选择 “文本配置”,选择 “二进制字体文件”

2bb467b6-12c4-11ed-ba43-dac502259ad0.png

3.4 设计 Screen1 (添加 Images/TextArea/Buttons)

2bd4ae22-12c4-11ed-ba43-dac502259ad0.png

3.5 设置 Typographies :

- Typographies 设置 :

2bfacb02-12c4-11ed-ba43-dac502259ad0.png

- Single Use 设置:

2c165430-12c4-11ed-ba43-dac502259ad0.png

3.6 TouchGFX Designer 生成项目

可以在以下目录下找到verdana和verdana italic的二进制字体文件 :

2c33be8a-12c4-11ed-ba43-dac502259ad0.png

3.7 在代码中安装二进制字体

在 TouchGFX 使用文本前,二进制字体必须从文件或其他存储中复制到可直接寻址的存储空间。当应用程序将二进制字体加载到内存时,它可以在 TouchGFX 中安装字体,之后 TouchGFX 将使用该字体而不是编译后的字体。

- 在FrontApplication.cpp安装默认的二进制字体:

2c450e06-12c4-11ed-ba43-dac502259ad0.png

2c690cb6-12c4-11ed-ba43-dac502259ad0.png

3.7 添加 Button 交互,用于选择使用不同的二进制字体

- 添加交互,当按键按下,切换成相应的二进制字体 :

2c8df33c-12c4-11ed-ba43-dac502259ad0.png

- 添加代码 Screen1View.hpp

2cb9e5c8-12c4-11ed-ba43-dac502259ad0.png

2cca3720-12c4-11ed-ba43-dac502259ad0.png

- 添加代码 Screen1View.cpp

2ce81cd6-12c4-11ed-ba43-dac502259ad0.png

2d097e80-12c4-11ed-ba43-dac502259ad0.png

3.8 编译运行结果如下 :

2d2a0e5c-12c4-11ed-ba43-dac502259ad0.png

2d3d005c-12c4-11ed-ba43-dac502259ad0.png

验证

从以上的演示可以看到,通过TouchGFX Designer的简单配置和调用其提供的API,就可以轻松实现字体的动态更新。

厂家和用户可以根据场景需求灵活使用本功能。比如 ,厂家可以通过针对的不同用户群体来提供OTA服务,让用户动态更新自己的字体类型。这样由于各二进制字体可以占用同一块内存区域,厂家的硬件成本也会得到降低。

具体示例实现过程,请参考示例代码 : 《hello-tgfx4180-binary-font-v1.0-202112.7z》

THE END

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15214

    浏览量

    171142
  • 二进制
    +关注

    关注

    2

    文章

    705

    浏览量

    41248

原文标题:工程师笔记|STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发案例:【app内字体大小调节】

    使用基础组件[Slider],通过拖动滑块调节应用内字体大小。
    的头像 发表于 04-19 15:36 83次阅读
    HarmonyOS开发案例:【app内<b class='flag-5'>字体</b>大小调节】

    鸿蒙开发UI界面——@ohos.font (注册自定义字体)

    字体管理中注册自定义字体。 系统能力: SystemCapability.ArkUI.ArkUI.Full 参数: 参数名 类型 必填 说明 options FontOptions 是 注册的自定义
    的头像 发表于 02-22 16:22 189次阅读

    为什么直流电机无法进行动态制动呢?

    为什么直流电机无法进行动态制动呢? 直流电机作为一种常见的电动机类型,广泛应用于工业生产、交通运输、家用电器等领域。但是,与交流电机相比,直流电机在动态制动方面存在一些限制。以下是关于直流电机无法
    的头像 发表于 02-02 16:17 414次阅读

    STemWin怎么使用大号字体

    STemWin 怎么使用大号字体, 看代码 GUI_SetDefaultFont 是 6x8 的字体,可是修改字体,那一堆宏,只有 6x8 有用,其他的宏都不管用。 怎么样使用大一号的字体
    发表于 11-01 07:19

    如何使用AT32的TMR和DMA动态更新PWM占空比

    本示例代码基于 AT32F403A,展示了如何使用 AT32 的 TMR 和 DMA 动态更新 PWM 占空比。该示例使用 TMR4 的更新事件触发 DMA1 搬运数据至 TMR4 的通道 2 数据
    发表于 10-27 06:28

    求助,关于MDK字体切换问题

    MDK5.23,将C/C++的字体由系统默认的Courier New切换为Consolas字体,想再切换回去的时候,发现Courier New字体选项居然不见了??百思不得其解,这难道还有什么特殊的地方??求助!!
    发表于 10-25 07:10

    HarmonyOS鸿蒙原生应用开发设计- HarmonyOS Sans 字体

    HarmonyOS设计文档中,为大家提供了独特的字体,开发者可以根据需要直接引用。 开发者直接使用官方提供的字体内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的字体
    发表于 10-23 16:12

    请问STC8单片机做显示陀螺如何更新显示字体

    STC8单片机做显示陀螺如何更新显示字体
    发表于 10-17 06:33

    JLINK怎么在线对本身的固件进行更新

    Jlink怎么在线对本身的固件进行更新
    发表于 10-09 08:39

    STM32GUI使用TouchGFX二进制字体(Binary Font)功能实现字体动态更新

    电子发烧友网站提供《STM32GUI使用TouchGFX二进制字体(Binary Font)功能实现字体动态更新.pdf》资料免费下载
    发表于 09-19 16:53 1次下载
    STM32GUI使用TouchGFX二进制<b class='flag-5'>字体</b>(Binary Font)功能实现<b class='flag-5'>字体</b><b class='flag-5'>动态</b><b class='flag-5'>更新</b>

    使用TouchGFX二进制翻译(Binary Translation)功能实现动态更新翻译

    电子发烧友网站提供《使用TouchGFX二进制翻译(Binary Translation)功能实现动态更新翻译.pdf》资料免费下载
    发表于 09-19 16:48 1次下载
    使用TouchGFX二进制翻译(Binary Translation)功能实现<b class='flag-5'>动态</b><b class='flag-5'>更新</b>翻译

    【原创分享】PADS Logic 字体的样式怎么设置

    Pads软件提供了非常强大的中文功能,能够设置多种字体样式来进行选择,用户可以使用自己喜欢的字体样式完成设计。 第一步:执行菜单命令设置-字体,如图1所示 图 1
    的头像 发表于 07-01 07:45 1293次阅读

    LabVIEW图标字体显示BUG修正教程

    LabVIEW的图标编辑器中可以自定义VI图标,需要自定义图标文本时,只有当文本的字体大小最少为12时才能正常显示输入的文字,当字体小于12时图标文本会显示的模糊不清。
    的头像 发表于 06-25 14:32 1284次阅读
    LabVIEW图标<b class='flag-5'>字体</b>显示BUG修正教程

    10种漂亮的Linux终端字体

    对于初学者,你可以选择 针对技术文档或编码优化的字体,因为它们具有良好的可读性。接下来,你可以筛选出 FOSS 项目(如果这对你很重要)并检查这些 字体是否可以在高分辨率显示器上很好地缩放(根据你的需求)。
    的头像 发表于 05-31 15:28 703次阅读
    10种漂亮的Linux终端<b class='flag-5'>字体</b>

    如何从LittleFS中提取自定义字体文件?

    经过几天的搜索和大量的反复试验,我决定请教专家……简而言之,我想弄清楚如何从 LittleFS 中提取自定义字体文件。我的 html 嵌入了 CSS 及其全部在我的代码中(不是外部文件)。但是,我
    发表于 05-11 06:41