自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linux mobile development & HTML5 Games/App

主要致力于基于linux的嵌入式系统的学习和研究,包括内核、驱动、GUI、MMI、软件设计方法和软件优化等方面.

  • 博客(764)
  • 资源 (2)
  • 论坛 (4)
  • 收藏
  • 关注

原创 AWTK 在 Android 平台实现跨进程服务调用

AWTK 在 Android 平台实现跨进程服务调用前几天,有朋友想在 AWTK 的应用程序中,调用打印机提供的服务,去打印采集到的数据。打印机本身有一个 APP,它提供了一个对外的服务,并附带一个 AIDL 文件。要说这个东西本身也不难,但是要在 AWTK 应用程序中,通过 C 语言函数去调用 java 的函数,再通过 java 的函数去调用另外一个进程的服务,对于只会 C 语言的嵌入式程序员来说,不懂 java 也不懂 android,还绕了几个大弯,那确实太难了。这里用一个 FooBar 的服务

2020-11-21 18:11:14 81

原创 AWTK fscript 脚本引擎

AWTK fscript 脚本引擎1. 介绍fscript 是一个极简的脚本引擎,借鉴了函数语言中一些思路,主要用于低端嵌入式系统,让用户轻松扩展现有系统,而不需要重新编译和下载固件。特色:小内存。最低开销小于 400 字节。小巧。核心代码 600 行,扩展函数 600 行。灵活。支持多条语句、函数嵌套调用和变量定义。强大。超过 50 个内置函数,支持用 C 语言扩展函数。如果不需要数学函数,可以定义 AWTK_LITE 宏。keil -O1 编译结果: Co

2020-11-21 16:45:45 98 2

转载 一篇关于broncho的文章(感慨+怀念,转过来存个档),感谢fmddlmyy

谈谈国内开发的Linux手机软件平台Broncho,兼谈Android、Openmoko等1、OpenMoko今年1月份,我曾经调查过Linux手机软件的现状。部分报告可以见我的blog:谈谈智能手机软件(1):概述、谈谈智能手机软件(2):Linux手机软件在此之后,我也看了一段时间OpenMoko。OpenMoko是完全开放、并提供真实样机的Linux手机方案。如果仅就开放性而言,没有其它手机方案可以和它媲美。但说句实话,OpenMoko的界面让我比较失望,我觉得这和正常的手机相差太远了..

2020-10-09 19:59:56 402 1

原创 AWTK 实时预览插件 (vscode) 工作原理

1. 背景很早就计划写一个 vscode 插件来预览 AWTK 的 UI XML 文件。迟迟没有动手,主要是既不太熟悉 vscode 插件的开发,也没有想清楚这个插件的架构。如何达到期望的目标,同时保证工作量可以接受呢?直到完成了 AWTK 自动测试框架,发现以服务的方式来实现界面预览是最好的选择:不但预览服务的工作可以重用现有的代码,而且可以保证插件本身的代码最小,以后为其它 IDE 增加预览的功能也相当简单。在开发 AWTK 自动测试框架 时,我们顺带实现了 AWTK RESTful HTTP 服

2020-10-05 08:06:48 641 2

原创 几则安卓开发笔记

几则安卓开发笔记对于熟悉 android 开发的人来说,有些属于常识问题,对于偶尔弄一下 android 的人,却要花很多时间才能搞定。这几天移植车牌识别库到AWTK-ANDROID上,遇到一些问题,这里做个笔记供大家参考:1. 使用外部项目的库1.1 修改 settings.gradle,增加外部库的引用如:include ':openCV'project(':openCV').projectDir = new File(settingsDir, '../../../awtk-lpr/open

2020-09-30 17:18:52 408 2

原创 GUI 引擎评价指标

GUI 引擎评价指标github 上的开源 GUI 引擎至少有数十个,如何去评估它们的优劣,如何选择你需要的 GUI 引擎?这个是艰巨的任务,每个人的需求不一样,GUI 开发者的意图也不同,很难找到统一的标准去选出最好的 GUI。QT 是最强大的,没有之一,但也不一定适合你。不管怎么样,总有些指标可以提供有价值的参考,尽管这些指标在遇到不同使用的场景,不同的公司背景,不同的个人喜好,它们所占的权重也大不相同。但是并不能抹杀这些指标的价值,关键在于如何根据自己的需要调整它们的比重。在 《这个开源的 6

2020-09-28 09:24:47 517

原创 鸿蒙“小程序”工作原理研究笔记

1. 介绍自从微信小程序出现以来,各种“小程序”如雨后春笋一般出现。事实证明小程序这种开发方式非常好,鸿蒙 JS UI 框架采用类似的方式也是在意料之中的。一个小程序(在鸿蒙 OS 中,也就是 Ability)由多个页面组成,每个页面由三部分组成:.hml 用来描述界面的元素.css 用来描述界面的风格.js 用来编写处理事件逻辑我们来看个例子:index.hml<div class="container"> <text>{{count}}&l

2020-09-21 17:00:18 1586

原创 开源GUI AWTK 1.5 发布

ZLG AWTK 1.5 Release Notes一、介绍AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。欢迎广大开发者一起参与开发:生态共建计划。AWTK 寓意有两个方面:Toolkit AnyWhere。ZLG 物联网操作系统 AWorksOS 内置 GUI。AWTK 源码仓库:主

2020-08-29 11:42:52 702

原创 awtk-restful-httpd 为嵌入式系统而生的RESTful HTTP 服务框架

awtk-restful-httpd1. 介绍在嵌入式应用程序中,有时需要提供一个 WEB 服务,用于对系统进行远程配置和管理。awtk-restful-httpd 实现了一个 RESTful HTTP 服务框架,可以帮助开发者快速实现 RESTful API 风格的 WEB 服务。主要特色有:小巧。约 3000 行代码。简单。注册自己路由表处理函数即可。易用。内置路由解析功能,并提供简单易用的 JSON 读写 API。内存开销低。正常 REST API 内存需求小于 2K,静态文件内存需求

2020-08-22 16:02:10 654 1

原创 AWTK WEB 版移植笔记-图片

AWTK WEB 版移植笔记-图片前面我们介绍了,为减小代码的体积,提高解码的速度,我们选择了使用浏览器的图片解码,而不是 stbimage 去解码。实际操作并非那么简单,其中遇到不少问题。浏览器的图片加载是异步的,而 AWTK 的图片加载是同步的。浏览器的图片 Image 在 AWTK 中没法直接表示。AWTK 中的图片名称是抽象的。比如名为 earth 图片,可能是 png、也可能是 jpg 或其它图片格式,这个由资源管理器自动检查。这种方式在浏览器中,会造成大量网络请求,就不太实用

2020-08-22 11:35:38 571

原创 AWTK WEB 版移植笔记-字体

AWTK WEB 版移植笔记-字体完整的中文字体至少得两三兆,如果编译 WEB 版本时,要带一个完整的中文字体文件,那资源的体积就没法容忍了。解决这个问题的唯一办法就是,缺省字体使用浏览器自带的字体,只有特殊字体才使用应用程序自己的字体。缺省字体使用浏览器自带的字体的前提是,不能使用 SDL 来渲染,因为把 SDL 转换成 WEB 版本后,没法修改里面的代码去使用浏览器的字体。幸好 AWTK 在设计之初,就采用了兼容 HTML5 Canvas 的 2D API,所以渲染这一块我们完全避开了 SDL,而采

2020-08-22 11:34:26 555

原创 AWTK 自定义的字体加载器的例子

awtk-custom-font-loader自定义的字体加载器的例子(可以根据自己的情况进行改造和完善)。在有平台上,内部 flash 很小,不足以存放字体资源。放在文件系统里,又没有足够的内存来加载整个字体文件。此时需要自定义字体加载器,以便只加载当前需要的部分字体。这里提供了一个自定义的字体加载器的例子(可以根据自己的情况进行改造和完善)。在这个例子中,采用了与 AWTK 中位图字体同样的数据格式,字体数据放在外部文件中,只是加载索引到内存,可以大大减少内存的需求。如果你的平台连加载完整索引的内

2020-08-09 10:57:49 667

原创 AWTK 表格视图的基本用法

AWTK 表格视图的基本用法AWTK Table View的基本特点:列表项无需事先创建。数据无需全部加载到内存。轻松支持数千万条数据记录。表格中可以放文本、图片、编辑器、进度条、滑块和下拉框等各种控件。1. 基本概念table_view_t 是表格视图的外壳,它的主要功能是协调 table_client_t 和滚动条。table_header_t 是表格的标题,它其实只是一个普通的容器,完全可以用 view 代替,但用 table_header_t 更具可读性。tabl

2020-07-19 16:21:10 761

原创 AWTK-MVVM 在 STM32H743 上的移植笔记

AWTK-MVVM 在 STM32H743 上的移植笔记本项目除了实现基本功能的移植外,还提供了如下功能:集成实时操作系统 (RTOS)(腾讯的 TinyOS)集成 FATFS 文件系统,访问 SD 卡的数据。实现从文件系统加载应用程序的资源。使用 Sqlite 存储数据。支持 google 拼音输入法。支持 mvvm 。1. 介绍在移植的时候,不管是什么板子,拿到板子的资料后,先找一个带有显示功能的最简示例。以这个最简示例为模板,加入 AWTK 相关代码再进行移植。本文中使用开发

2020-07-11 11:29:30 1979

原创 AWTK flash 空间优化

为 512K Flash 优化空间背景缺省情况下,demo1 在 STMF103 上的空间占用情况如下。Program Size: Code=222780 RO-data=232212 RW-data=720 ZI-data=53440 对于只用 512K Flash 的平台来说,给应用程序留下的空间就比较少了,这里介绍一下进一步优化空间方法:AWTK 优化将编译器的优化级别提高一级 (O1):可以优化掉 30K 左右的空间:Program Size: Code=1936

2020-06-06 17:36:04 1014

转载 AWTK Designer 0.1.5正式发布,界面设计竟如此简单!

AWTK Designer是专门用来制作AWTK应用程序的UI界面的实用工具,只要通过拖曳和点击就可以完成复杂的界面设计,而且可以随时预览效果图。通过AWTK Designer即可完成UI界面元素的布局、设置控件属性、给控件添加动画效果和设置样式等。得益于AWTK强大的功能和跨平台特性,AWTK Designer本身也是基于AWTK构建的。今天,我们迎来了AWTK Designer 0.1.5的发布。在这个版本中,我们完善了许多细节,并增加了部分新功能,如:支持多主题编辑、编译...

2020-06-02 11:42:13 1416 2

原创 AWTK 输入事件记录与重放

输入事件记录与重放1. 用途输入事件记录与重放的常见用途有:自动演示功能。长时间运行进行压力测试。辅助手工测试。有时出现崩溃的 BUG 时,往往忘记之前是如何操作的了,输入事件记录与重放可以精确重现问题。同时也可以减轻手工测试的工作量。2.API/** * @method event_recorder_player_start_record * 开始事件记录。 * @annotation ["static"] * @param {const char*} filename 用于保存

2020-05-26 11:29:57 993

原创 AWTK 在 STM32H743 上的移植笔记(集成RTOS和文件系统)

STM32H743 移植笔记本项目除了实现基本功能的移植外,还提供了如下功能:集成实时操作系统 (RTOS)(腾讯的 TinyOS)集成 FATFS 文件系统,访问 SD 卡的数据。实现从文件系统加载应用程序的资源。1. 介绍在移植的时候,不管是什么板子,拿到板子的资料后,先找一个带有显示功能的最简示例。以这个最简示例为模板,加入 AWTK 相关代码再进行移植。本文中使用开发板...

2020-05-07 16:32:07 2674

原创 awtk-linux-fb 使用 double framebuffer 闪烁的问题

awtk-linux-fb 使用 double framebuffer 闪烁的问题有朋友说 awtk-linux-fb 在某某平台闪烁很厉害,log 显示该平台使用的双帧缓冲。从代码和网上查的资料来看,目前的处理方法没有问题:无非就是通过 FBIOPUT_VSCREENINFO 或 FBIOPAN_DISPLAY 去修改 fb_var_screeninfo 的 yoffset。如: vi...

2020-04-01 11:28:34 1395

原创 AWTK-MVVM:用 C 语言实现 Model

9.1 介绍用 AWTK-MVVM 开发应用程序时,开发者的主要工作是编写 Model 的代码,而 ViewModel 则由代码产生器自动生成。在版本 1.0 中,我们提供了一个代码生成器,该代码生成器根据提供的 json 文件,自动生成 Model 和 ViewModel 的代码的框架代码。根据《程序员修炼之道:从小工到专家》的描述,这是一个被动代码生成器,我们需要理解生成的代码,并在上...

2020-03-22 08:13:27 1606 6

原创 如何在C++中嵌入JAVA

如何在C++中嵌入JAVA最近在为 AWTK 增加 JAVA 绑定,在 Windows 和 Linux 下工作正常,但是在 MACOS 上运行起来遇到下列问题:java[5714:260503] WARNING: NSWindow drag regions should only be invalidated on the Main Thread! This will throw an exc...

2019-12-20 17:51:18 1952

原创 MVVM模式在嵌入式GUI AWTK 中的实现

AWTK-MVVM是一套为AWTK用C语言开发,并支持各种脚本语言的MVVM框架,实现了数据绑定、命令绑定和窗口导航等基本功能,使用AWTK-MVVM开发应用程序,无需学习AWTK本身的API,只需学习绑定规则和Model的实现方式即可。1.1 分离用户界面和业务逻辑在开发应用程序时,要把用户界面和业务逻辑分离开来,这是每个程序员都知道的常识。分离用户界面和业务逻辑有几个重要的好处:有利...

2019-12-12 14:25:13 2066

原创 AWTK 控件焦点相关问题

AWTK 控件焦点相关问题一、启用焦点停留 (tab stop)除了 edit 控件外,其它控件如果需要焦点停留功能,可以指定控件的 focusable 属性为 true 来实现。在 XML 中,可以这样指定: <button ... focusable="true"/>在 C 代码中,可以这样指定: widget_set_prop_bool(widget, WIDGET...

2019-11-20 15:49:22 1509

原创 在 AWTK 中 如何让文本滚动起来

如何让文本滚动起来在很多时候,特别是在小屏幕的硬件上,控件比较小而要显示的文本比较长。此时,我们需要在控件获得焦点时/或点击时,让文本滚动起来,以便让用户看到完整的信息。AWTK 提供了 hscroll_label_t 控件,可以轻松满足文本滚动的需求。一、基本用法示例:<window anim_hint="htranslate" text="hscroll_label" chi...

2019-11-15 18:17:12 1657

原创 AWTK 中 LCD 接口的四种实现方式

LCD 接口的四种实现方式LCD 是对显示设备的抽象,提供了基本的绘图函数。自己去实现 LCD 接口虽然不难,但是需要花费不少功夫,AWTK 提供了几种缺省的实现,利用这些缺省的实现,在移植到新的平台时,一般只需要很少的代码就行了。下面我们介绍一下几种常见的 LCD 实现方式:一、基于寄存器实现的 LCD在低端的嵌入式平台上,内存只有几十 KB,没有足够的内存使用 framebuffer,...

2019-11-14 17:21:01 1968 4

原创 AWTK 在腾讯 TOS 上的移植笔记

AWTK 在腾讯 TOS 上的移植笔记本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特别的改动。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。1. 加入 TOS 相关文件。AWTK 已经移植到 STM32f103ze 裸系统上,为了简单...

2019-11-09 08:49:43 1583

原创 AWTK 在 RT-Thread 上的移植笔记

AWTK 在 RT-Thread 上的移植笔记本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。1. 加入 RT-Thread 相关文件。AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 awtk-stm32f103ze-raw 基础上...

2019-11-09 08:31:47 2052

原创 AWTK WEB版移植笔记-基础

AWTK WEB版移植笔记-基础将一个C语言写的hello world编译成web版本是很简单的,网上有大量这样的例子。写这样的例子是必要的,让我们能够快速入门,但是实际项目则要复杂的多,这里会介绍一些emscripten的基础知识,同时强调移植AWTK过程中遇到的问题,希望能让大家少走弯路。一、命令行参数1.EXPORTED_FUNCTIONS 用于导出应用程序中C的函数供JS调用。如:...

2019-09-12 07:16:08 1593

原创 NanoVG 优化笔记:性能提高5倍的秘密

NanoVG 优化笔记nanovg正如其名称所示的那样,是一个非常小巧的矢量绘图函数库。相比cairo和skia的数十万行代码,nanovg不足5000行的C语言代码,称为nano也是名副其实了。nanovg的设计、接口和代码质量都堪称典范,唯一美中不足的就是性能不太理想。特别是在Android的低端机型和大屏幕的机型上,一个简单的界面每秒只能画十几帧。最近我把AWTK移植到Android上时,...

2019-08-06 10:54:01 1685

转载 国产开源 GUI 引擎AWTK 1.2 发布

AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,并支持跨平台同步开发,一次编程,终生使用。AWTK当前升级到了v1.2版本,相对于v1.1,我们完善了许多细节,增加了部分特性、控件以及API等,让AWTK支持更多的功能和更炫酷的效果。**  1....

2019-08-06 10:52:23 2165 2

原创 AWTK WEB版移植笔记-序

AWTK WEB版移植笔记-序一、WEB版本对AWTK意义AWTK-WEB版本对AWTK是很重要的,主要原因有:让用C语言开发的AWTK应用程序,在不需要修改源码的情况下,能在浏览器中运行。这样做的好主要在于,可以很方便的向客户展示项目。你只需分享一个链接,客户就可以在浏览器中打开,并看到实际的运行效果,这是一种非常棒的体验。把AWTK编译成一个JS库,你可以用JS开发AWTK应用...

2019-07-10 10:55:48 2207 1

原创 集成 armcc 到 scons

集成 armcc 到 scons集成 armcc 到 scons 中并不是件容易的事情,如果只是修改 CC/CXX/AR/LINK 几个环境变量,scons 会用 Visual C++的参数调用方式,比如-c 成了/c,导致 armcc 无法识别。花了半天时间去阅读 scons 的源码后,在 SCons/Tool 目录下发现,每种编译器都有一个类似插件的 tool,目测没有发现 armcc 的...

2019-06-28 16:49:03 1734

原创 物联网 GUI 开发套件 AWTK-IOTJS

一、介绍关于 iotjsiotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。关于 AWTKAWTK 全称 Toolkit An...

2019-06-18 14:19:57 3762 5

原创 集成 AWTK 到 iotjs

集成 AWTK 到 iotjsiotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源...

2019-06-10 17:20:08 1550

原创 为 iotjs 开发原生模块

为 iotjs 开发原生模块iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 ...

2019-06-07 12:46:21 1653

原创 ZLG开源GUI引擎AWTK发布1.1版本

ZLG开源GUI引擎AWTK发布1.1版本一、介绍AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎。AWTK寓意有两个方面:Toolkit AnyWhere。ZLG物联网操作系统AWorks内置GUI。AWTK源...

2019-04-25 09:19:52 2712 1

原创 AWTK javascript绑定原理

AWTK javascript绑定原理一、基本架构Javascript的绑定方法和lua的绑定方法有些不同,主要原因是javascript的引擎有很多种,比如嵌入式系统常用的jerryscript和PC上常用的V8。不同的引擎提供注册C/C++函数的能力不同,所以在绑定时我们只对引擎做一个最低能力的要求:提供注册全局函数的能力。我们把绑定的代码分两层:引擎相关的代码负责把awtk的函数...

2019-04-24 15:14:11 1709

原创 AWTK实现自定义软键盘的方法

有时需要把软键盘嵌入到窗口内部(比如计算器和密码输入等),这时可以使用自定义软键盘。一、编辑器设置input_type为"custom"(它会禁止内置的软键盘)。&lt;edit x="c" y="10" w="90%" h="30" focus="true" input_type="custom" text="" /&gt;

2019-03-14 11:39:43 2258

原创 AWTK是如何保证代码质量的

AWTK是如何保证代码质量的这是不少朋友关心的问题,这里统一回复一下。我们在保证AWTK的代码质量方面,主要采用了下列措施:架构设计。 软件架构对代码的质量有决定性的影响,但好的架构不是预先设计出来的,而是在应对各种需求和变化时,不断完善和优化出来的。常常见到,有人花十年时间打造一件绝世作品,也有人花几年时间让一套软件变成不可维护,这就是说明软件架构是在不断变化的,是变好还是变坏,则取决于...

2019-01-18 16:49:51 3073

原创 AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI

AWTK = Toolkit AnyWhereAWTK是吸取了FTK和CanTK的精华,重新开发的GUI,计划分以下几个阶段实施:第一阶段专注于嵌入式系统,到达并超越TouchGfx/Embedded Wizard的功能。计划在2018/9底完成。第二阶段用AWTK本身开发界面编辑器(或组态软件IDE),从而验证AWTK支持PC软件开发的能力。计划在2018年底完成。第三阶段支持Mo...

2018-07-08 12:19:42 12368 5

awtk_on_stm32h743iitx_port.pdf

本文档介绍除了AWTK实现基本功能的移植外,还提供了如下功能: * 集成实时操作系统 (RTOS)(腾讯的 TinyOS) * 集成 FATFS 文件系统,访问 SD 卡的数据。 * 实现从文件系统加载应用程序的资源。 * 使用 Sqlite 存储数据。 * 支持 google 拼音输入法。

2020-06-30

点阵字体产生器 1.2

====================================================<br>ZTGen<br>====================================================<br><br>ZTGen是什么<br>====================================================<br><br>ZTGen是一个点阵字体产生工具,它可以把Windows系统中的字体,转换成点阵字<br>体的数据。输出的结果可以按照ANSI排序,也可以按照Unicode排序。<br><br>ZTGen的用途<br>====================================================<br>常常会有这样的情况:<br><br>在开发嵌入式系统时,需要显示不同大小或字体的汉字。显然,对于嵌入式系统,<br>不太可能使用矢量字体,而点阵字体,不同大小的字体不能简单的缩放。<br><br>另外,对一个小系统,也不需要完整的字体,往往只要几十个,甚至几个就够了。<br><br>一般,我们采用的方法是,自己准备点阵字体的数据,在显示汉字时,把这些数据<br>写入显存就行。<br><br>这时又存在另外一个问题,由于是不完整的字库,不能简单的用汉字的内码去找到<br>对应的字体数据,如果逐个比较,又费时间。比较好的方法就是把字体数据排序,<br>查找时用二分查找,这样可以大大提高查找效率。<br><br>ZTGen就是为以上问题提供一个完整的解决方案:<br><br>首先,把你指定的汉字转换成你指定字体、大小的字体数据。<br>然后,把这些字体数据按ANSI或者Unicode排序。<br>最后,提供一组函数去查找和显示汉字。<br><br><br>ZTGen如何使用<br>====================================================<br>使用很简单:<br><br>选择字体:点击"字体"按钮,在字体对话框里选择字体、大小、效果等。<br>准备汉字:把你要显示的汉字拷到左上角的编辑框内。<br>选择排序方式:按ANSI或者Unicode排序。<br>产生数据:点击"产生"按钮。<br><br>右上角是单个汉字的文本显示效果。如:<br>0100 11 <br>0100 11 <br>2108 11 11 11 <br>3ffc 111111111111111111111111 <br>2108 11 11 11 <br>2108 11 11 11 <br>2108 11 11 11 <br>2108 11 11 11 <br>2108 11 11 11 <br>3ff8 1111111111111111111111 <br>2108 11 11 11 <br>0100 11 <br>0100 11 <br>0100 11 <br>0100 11 <br>0100 11 <br>0000 <br><br>左下角是字体数据。如:<br>按Unicode排序:<br>{<br> EX_FONT_CHAR_VAL("中")<br> EX_FONT_UNICODE_VAL(0x4e2d)<br> {0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3f, 0xfc, 0x21, 0x08, <br>0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x21, 0x08, <br>0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00}<br>}<br>按ANSI排序:<br>{<br> EX_FONT_CHAR_VAL("中")<br> EX_FONT_ANSI_VAL(0xd6d0)<br> {0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3f, 0xfc, 0x21, 0x08, <br>0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x21, 0x08, <br>0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00}<br>}<br><br>最后就是按这些数据与显示函数集成起来。<br><br>ZTGen工作原理<br>====================================================<br>因为Windows显示汉字时,对程序员来说,就是把汉字的写到Device Context中。<br>我们只从Device Context中把这个汉字对应的像素的值读出就行了。<br><br>报告错误<br>====================================================<br>如果你发现有什么错误,请麻烦您告诉我一下:xianjimli@hotmail.com<br><br>需要源代码的朋友可以到http://sourceforge.net/projects/fontgen/下载。<br>

2007-09-18

李先静的留言板

发表于 2020-01-02 最后回复 2020-01-10

最近要招几个linux高手,不知行情如何?请在各位大侠指点。

发表于 2005-11-15 最后回复 2019-07-16

开源HTML5 APP开发神器CanTK发布

发表于 2014-09-09 最后回复 2017-01-05

开源HTML5 Canvas游戏Runtime发布

发表于 2015-05-17 最后回复 2015-06-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除