佳明手表APP开发系列02——汉字和图标的标准显示

news2025/1/19 14:29:14

前言

使用点阵字库的方式来汉化或者增强佳明App的显示是一种传统的方法,操作繁琐,效果也一般。笔者通过进一步的学习,发现佳明的MonkeyC支持一种新的方式,即 BmpFont文件的显示,可以像使用普通字符一样对包括汉字在内的符号进行输出。 这无疑是减轻了开发压力,使开发过程更加流畅。下面简单介绍一下,BmpFont的使用过程。

BMP Font 简介

Bmp Font文件由两部分组成,.fnt 文件和.png, .fnt 是配置文件,里面记录了字体的属性,主要是记录了字体的编码和对应图像在png文件中的位置。png文件保存了对应的字体的图像,代码根据配置文件找到对应字符的位置和范围,将图形从png文件里取出,然后渲染到屏幕上。这一过程的操作都是自动的,和使用系统字体一样的操作,因此非常方便。

转换过程介绍

佳明推荐的转换软件是:bmfont 有32 和64 位两个版本,这是一个第三方公司开发的免费软件。
其使用说明和下载地址:http://www.angelcode.com/products/bmfont/

字体转换工具bmfont 使用方法

根据笔者经验,有两点比较重要
1、输出字体的尺寸控制
2、字符文件的编写

下面分别介绍,
1.输出字体的尺寸控制,如图
在这里插入图片描述
这个尺寸决定了png文件中的字体的(图像)的大小,其余参数,使用了默认值,可根据实际情况自己调整。

2.字符选择
你需要的文字符号基本是固定的,加上手表的内存限制,因此只转化你需要的文字就可以了。

转化时准备一个txt文件,注意,保存时请使用 utf8-bom 编码保存,否则这个软件会认为有错。

笔者使用的是:Notepad++(可能比较老了),编辑的文件举例如下
在这里插入图片描述
,保存后,使用
在这里插入图片描述
选择文件,然后

在这里插入图片描述
就可以了。

在MoneyC 中使用bmpfont

1.在resource.xml中进行如下配置
在这里插入图片描述
其中 antialias 请根据实际情况进行选择,有的手表或许支持 为 true的的情况,但是一般不支持。
filename就是上面生成的文件名。
id 对应的是字体资源的ID,具体看下面说明。filter 是你程序需要的文字或者字符,请根据实际情况配置。
2.代码中使用bmgfont

首先定义一个 字体资源变量,如下代码

 hidden var _myIconsFont as FontResource?;// for displaying  ❤ symbol ont sund 2023-05-11 

获取这个资源

    _myIconsFont = WatchUi.loadResource($.Rez.Fonts.id_font_myIcons) as FontResource;

注意上面的 id_font_myIcons 就是resource 文件中定义的id;

输出

      var font = _myIconsFont;
       if (font != null) {
  
            item.setFont(font);
            item.setText("心");// draw heart icon 
            //item.setColor(Graphics.COLOR_DK_RED);
         
        }
      

fnt文件里面保存了 编码和对应字体图像的配置,如下所示:
在这里插入图片描述
上面的id就是utf8-bom编码,程序根据你输入的汉字(编码), 查找这个文件就可以找到对应的字形对应的图像(二色图像),如图

在这里插入图片描述
另外,你可以根据实际情况,自己建立映射关系,例如笔者就用 “心”字和 ❤ 建立了映射关系,在手表上显示了 ❤图标。

如图:
在这里插入图片描述
是记

MaraSun BJFWDQ

烈日炎炎似火烧,心中好似滚油浇。
38°的北京,热情高涨。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

东芝光电耦合器TLP152(TPL,E的工作原理以及应用

东芝深力科TLP152(TPL,E是SO6封装中的光电耦合器,由GaA组成ℓ作为红外发光二极管(LED)光学耦合到集成的高增益、高速光电探测器IC芯片。光电探测器IC芯片具有内部屏蔽,提供20kV的高共模瞬态抗扰度/s,从而在输入和输出引…

MySQL-分库分表详解(二)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

港联证券|利好刺激创新药板块迎久违拉升 估值处历史低位

昨日,国家医保局就《谈判药品续约规则》及《非独家药品竞价规则》公开征求意见。在此利好消息影响下,创新药板块集体拉升。截至收盘,创新药指数涨幅近1%,实现四连阳。港股创新药指数收盘涨超3%。 机构认为政策利好创新药发展 《非…

Impala3.4源码阅读笔记(一)data-cache功能

前言 本文为笔者个人阅读Apache Impala源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。 基本信息 data-cache是impala在本地的数据缓…

解决github无法打开问题

第一步,去如下目录复制hosts文件副本到桌面【切记,要复制到其他文件夹下,不要直接改原文件】。 C:\Windows\System32\drivers\etc 第二步,以文本文档形式打开复制的副本文件,添加如下语句保存后【替换】掉原有hosts文件…

Ubuntu 16.04 安装Arduino ESP32开发环境记录

文章目录 安装arduino开发环境:安装ESP32开发环境编译上传 安装arduino开发环境: Arduino IDE 2.x好像对于ubuntu16.04不太支持,尝试了一下执行不了。这里 我们可以下载早期的1.8.x版本。 根据自己的电脑类型在红框中选择对应的版本进行下载…

CHI 控制信号说明

(部分描述采用了他人的文章,待后续补充出处,此处为草稿) Address PA/VA 位宽之间的对应关系; Non-secure bit 该bit指示了secure和non-secure空间,对于snoopable的trans, 即使地址相同,secure和…

阿里首次公布 Java10W 字面试复盘笔记,面面俱到、太全了

Java 面试 “金三银四,金九银十”这个字眼对于程序员应该是再熟悉不过的了,每年的金三银、金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话,面试中 7 分靠能力,3 分靠技能;在刚开始的时候介绍项目都是技…

代码行数统计插件(Intellij IDEA 代码统计插件 Statistic 详细使用教程)

代码行数统计插件(Intellij IDEA 代码统计插件 Statistic 详细使用教程) 在项目的开发过程中,你有没有遇到以下的一些场景: 想统计一下整个项目的代码量有多少,比如有多少源代码文件,总体有多少行代码&…

多元分类预测 | Matlab基于灰狼优化深度置信网络(GWO-DBN)的分类预测,多特征输入模型,GWO-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于灰狼优化深度置信网络(GWO-DBN)的分类预测,多特征输入模型,GWO-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可…

基于深度强化学习的人岗匹配算法研究

一.需求分析 面向HR的人岗匹配功能,帮助HR高效挑选简历。模型能够根据给出的不同岗位需求,在简历库中挑选出与岗位需求最匹配的几个简历推荐给HR。岗位的常见需求包括:年龄、学历、工作年限三方面。简历也具有以下几个特征:应聘人…

第一章 SSD综述

SSD(Solid State Drive),即固态硬盘,以半导体存储数据,用纯电子电路实现,没有任何机械设备。 HDD(Hard DiskDrive),即传统机械硬盘。 一、SSD与HDD 1.1 两者的异同 1…

50从零开始学Java之万类之王Object是怎么回事?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前面的文章中,壹哥跟大家说过,Java是面向对象的编程语言,而在面…

Ymodem协议应知应会

1.优势 在嵌入式环境中,一旦需要和设备之间通过某种协议传输文件,Ymodem协议因为具备如下特征: 基本的流控基本的握手支持多文件传输支持校验协议精简,代码量少用众多既有客户端软件可以供测试,免写上位机程序。 因…

C++11:右值引用

文章目录 1. C左值和右值2. C右值引用 右值引用是一种新的 C 语法,基于右值引用引申出了 2 种 C 编程技巧,分别为移动语义和完美转发。本文主要介绍什么是右值引用以及它的基本用法。 1. C左值和右值 右值引用可以从字面意思上理解,指的是以…

【springboot+云计算】B/S医院信息管理系统源码(云HIS)

一、基于云计算技术的B/S架构的医院管理系统(简称云HIS) 采用前后端分离架构,前端由Angular框架、JavaScript语言开发;后端使用Java语言开发。系统遵循服务化、模块化原则开发,具有强大的可扩展性,二次开发方便快捷。为医疗机构提…

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口…

Python之全-新-深-细详解

文章目录 第一章 Python环境搭建1.1. 计算机基础1.1.1. 什么是编程1.1.2. 什么是进制1.1.2.1. 进制的简介1.1.2.2. 进制的分类1.1.2.3. 进制的表示1.1.2.4. 进制的转换1.1.2.5. 原反补(了解)数据的转换负数的表示补码的引入 1.2. Python的介绍1.3. Python的安装与使用1.3.1. Py…

SSM简单项目遇到的几个问题

这几个问题,干扰了我很长时间。 主要因为书本的例子,是通过controller层返回到jsp层。但是,最后一个SSM项目,它用的是controller返回信息给Service层,再由Service层返回Jsp层。 实训:编写一个模糊查询姓名…

前端(三)——MVC与MVVM模式的battle

😄博主:小猫娃来啦 😄文章核心:mvc模式mvvm模式的battle 文章目录 mvc模式是什么mvc模式的优缺点优化mvc模式致命的缺点mvvm是什么,和mvc有什么关系?细看mvvm和mvc的不同 mvvm的缺点简化视图层开发 mvc模式…