一、touchGFX工程搭建

添加一个box和textArea控件

注意:textArea控件需要通配符,至于字体下面有简介

二、bin文件字体生成

1、新建字体


按如上图片新建一个字体,下面填写的0x4e00-0x9fa5,0x0000-0x007f为Unicode编码中文范围和字母范围。将如上字体设置到textArea控件。

2、touchGFX设置生成字库

3、将生成的bin文件字库拷贝到SD卡或flash中

生成bin文件的目录为\TouchGFX\generated\fonts\bin

将这文件拷贝到外部存储器

4、取消touchGFX设置


不取消的话生成的字符会保存到内部flash,导致空间不足。

三、touchGFX源码修改


void TouchGFXHAL::initialize()
{// Calling parent implementation of initialize().//// To overwrite the generated implementation, omit call to parent function// and implemented needed functionality here.// Please note, HAL::initialize() must be called to initialize the framework.rt_thread_mdelay(2000);TouchGFXGeneratedHAL::initialize();#define SDRAM_START_ADDR 0xc0000000uint32_t frame_size = DISPLAY_HEIGHT*DISPLAY_WIDTH*3;//一个帧缓冲区的大小setFrameBufferStartAddresses((void*)SDRAM_START_ADDR, (void*)(SDRAM_START_ADDR+frame_size), (void*)(SDRAM_START_ADDR+frame_size*2));//设置三级缓存地址,最后一级是开启动画功能的setFrameRateCompensation(true);//开启帧速率补偿,对动画有平滑的作用//图片缓存功能#define BITMAP_CACHE_SIZE   0xA00000       //图片缓冲区大小,这里设为10MBBitmap::removeCache();Bitmap::setCache((uint16_t*)(SDRAM_START_ADDR+frame_size*3),BITMAP_CACHE_SIZE,1);//设置资源缓冲区的地址和大小,最后一个默认的0不用传,让其自动计算Bitmap::cacheAll();//开始缓存所有的图片//加载全中文字库#define FONT_CACHE_SIZE   0xA00000       //字符缓冲区大小,这里设为10MBuint8_t *fontCacheAddr = (uint8_t *)(SDRAM_START_ADDR+frame_size*3+BITMAP_CACHE_SIZE);//分配内存空间int fd;struct stat fileState;fd = open("/sdcard/touchgfx/font.bin", O_RDONLY);if(fd >=0){stat("/sdcard/touchgfx/font.bin",&fileState);read(fd, fontCacheAddr, fileState.st_size);close(fd);//placement new 就地new->不需要重新分配新的空间new (&binaryFont)BinaryFont((const touchgfx::BinaryFontData *)fontCacheAddr);TypedTextDatabase::setFont(Typography::TEST, &binaryFont);}else {rt_kprintf("open failed!\r\n");}}

1、首先寻找一块区域用来存储字体数据
2、从sd卡读取字体数据
3、设置字体

//placement new 就地new->不需要重新分配新的空间
new (&binaryFont)BinaryFont((const touchgfx::BinaryFontData *)fontCacheAddr);
TypedTextDatabase::setFont(Typography::TEST, &binaryFont);

四、字体使用

1、第一种方法

如下直接赋值就行

    this->textArea1Buffer[0] = 0x5f90;this->textArea1Buffer[1] = 0x9e4f;this->textArea1Buffer[2] = 0;this->textArea1.invalidate();

2、第二种方法

注意:字符编码必须是Unicode,编译器字符编码要设置成Unicode

Unicode::snprintf(this->textArea1Buffer,this->TEXTAREA1_SIZE,"%s", "小灰灰真牛逼");
this->textArea1.invalidate();

2、第三种方法

如果编译器用的keil可以用如下方法,加L的意思是默认Unicode编码。

 Unicode::strncpy(fontTextAreaBuffer, (Unicode::UnicodeChar*)L"小灰灰真牛逼!", FONTTEXTAREA_SIZE);
fontTextArea.invalidate();

touchGFX综合学习五、touchGFX加载外部(SDCARD、SPI FLASH等)字体显示,包括中文相关推荐

  1. flash cs4 java运行时_加载外部数据时Flash CS4 IDE内部缓存

    它们存储在您的系统's 1166699 cache (i.e. I.E.'缓存中 . 我有Firefox作为我的默认浏览器,但它们仍然存储在" AppData\Local\Microsoft ...

  2. 加载动画php,CSS3学习之页面加载动画(二)

    本篇文章给大家分享6种css3的页面加载动画.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 在之前的文章[CSS3学习之页面加载动画(一)]中已经分享了四个CSS3的加载动画,今天 ...

  3. ajax如何请求json文件,简单的ajax请求加载外部json文件

    我在学习ajax ....我试图从json文件发出一个基本请求,它与我的index.html位于同一个文件夹中,但由于某种原因它说未定义:(我可以看到错误是可变的人,但我不能赶上为什么它未定义.... ...

  4. @value 静态变量_Spring注解驱动开发之八——@Value属性赋值、@PropertySource 加载外部配置文件...

    本文包含以下内容: 建立新的配置类 建立新的测试方法 通过@Value 进行赋值 通过@PropertySource  加载配置文件,并进行注入 拓展@Value  .@PropertySource ...

  5. flash as3 android air 插入视频,FLASH加载外部影片as3代码

    FLASH加载外部影片as3代码 作者:小龙博客 2010年01月7日 没有评论 分类:AS3 学习 flash var loader:Loader=new Loader(); loader.load ...

  6. html加载swf 进度条,Flash加载外部文件创建进度条3种方法

    Flash加载外部文件创建进度条3种方法 互联网   发布时间:2008-10-07 09:36:14   作者:佚名   我要评论 加载外部文件的进度条(看帮助文档整理),只适合那些不愿看帮助文档的 ...

  7. 加载外部字体和文字排版 (制作三国演义)

    加载外部字体和文字排版 制作三国演义 代码如下: html: <div id="main"><article><header><hgrou ...

  8. Flash:关键帧中调用自建的音乐类,进行播放、关闭、循环音乐+按键播放或者关闭外部音乐+循环播放背景音乐+播放按钮音乐+停止+加载外部音乐文件+AS2播放背景音乐

    目录 一.关键帧里面:调用自建的音乐类, 循环播放外部音乐.进行播放.关闭.循环音乐 1.代码:自建音乐类 2.关键帧中创建.播放.暂停背景音乐+按钮音乐 3.文件布置 二.关键帧中:按键播放或者关闭 ...

  9. 使用jQuery和YQL,以Ajax方式加载外部内容

    我们来看看怎样使用jQuery,以Ajax方式加载外部(其他域上)的内容.这里的所有代码都可以从GitHub下载,也可以在这个演示页面中获取,因而不用复制粘贴了. OK,Ajax通过jQuery是很容 ...

最新文章

  1. 迄今为止程序员写过的最大Bug:亏损30亿、致6人死亡,甚至差点毁灭世界
  2. SQL Server2005如何进行数据库定期备份(转)
  3. MyEclipse中快捷键
  4. Android 使用jarsigner给apk签名的方法详细介绍
  5. 国产数据库技术全面破冰,金融核心系统打破国外巨头垄断指日可待
  6. 串口工具securecrt_SecureCRT配置华为交换机部分命令
  7. linux命令行安装libxml,Ubuntu 14.04下libxml2的安装和使用
  8. [Python] L1-053 电子汪-PAT团体程序设计天梯赛GPLT
  9. Design:功能结构分类描述
  10. 221. Maximal Square
  11. Kafka下载安装及部署
  12. ALEXA解释(日IP500,可以使你进10万内)
  13. 什么是gzip?为什么要用gzip?使用gzip的优势和劣势是什么?需要哪些岗位进行配合才能够实现gzip内容的应用?
  14. 静态语言采用什么方式执行 如c语言,编程语言的两种执行方式
  15. 怎样将多个韵达快运单号物流中含有问题件的单号归类
  16. Spring容器框架
  17. openEuler@树莓派
  18. 计算机为什么找不到摄像头,win7系统摄像头图标不见怎么办?找回win7摄像头图标的两种方法...
  19. 基于esp8266的Arduino网络时钟
  20. java 单选题_JAVA单选题参考题库

热门文章

  1. 以wifi为媒介,linux系统与android设备交互
  2. 用Excel生成频率分布表及频率分布直方图
  3. Python @装饰器
  4. linux iptables mac,mac下的iptables---pfctl
  5. 使用SketchUp制作球体的方法(图文教程)
  6. 开源搜索引擎评估:lucene sphinx elasticsearch
  7. 番茄炖牛腩做法,味美汤浓开胃爽口,牛腩入口即化,太下饭!
  8. 【终极之战】基于Vue3+Vant3造一个网页版的类掘金app项目 - 个人主页
  9. 好朋友结婚了,祝福你们!
  10. selenium webdriver (python)的基本用法一