tGFX
一个轻量、简单、快速、免费、无任何依赖、跨平台的图形库,二维图形绘图库。可运行在 C51、STM32、Arduino、ESP8266 等各种单片机上,也可以运行在 Linux、Windows、MacOSX 等各种桌面电脑上。
Github: https://github.com/LanFly/tGFX
文档
中文文档: http://timor.tech/project/tGFX
English: http://timor.tech/project/tGFX/en
问题反馈
https://github.com/LanFly/tGFX/issues
测试
现在还没有测试用例,但是我会尽可能找时间编写测试单元。因为我还要搬砖的嘛!😂
示例
https://github.com/LanFly/tGFX/tree/master/examples/gfx-demo-x86: 一个在 MacOSX 或者 Linux 上使用 X11 演示绘图的 tGFX 示例。
更多示例请查看这里 https://github.com/LanFly/tGFX/tree/master/examples。我正在积极开发中。
支持的特性
- 简单、轻量 (这很重要)
- 免费并且开放源代码
- 内置字体支持,并且支持自定义字体(中文字体正在开发中)
- 完善的文档支持
- 跨平台
- 无任何依赖
- 支持画布(Canvas)渲染
- 支持实时渲染 (即无内存渲染,实时输出绘图)
- 单色, 565, RGB, RGBA 颜色模式支持 (565已实现,其余正在开发中)
如何使用字体
1
2
3
4
5
#include "tGFX/565/font.h"
// 使用 5*8 点阵字体. 字体名称: FONT_5X8
#include "tGFX/font/5x8.h"
tGFX_draw_text(canvas, 10, 110, "Hello tGFX!\n...", 16, &FONT_5X8, 0xffff);
中文字体正在开发中。
开始使用
第一步,选择一种要使用的颜色模式,然后包含它的头文件就可以了。
example:
1
2
3
4
5
6
7
8
9
10
11
12
#include "tGFX.h"
#include "tGFX/565/basic.h"
int main()
{
// 使用 565 颜色格式的 Canvas.
tGFX_Canvas *canvas = tGFX_create_canvas(128, 128, tGFX_COLOR_MODE565);
tGFX_draw_pixel(canvas, 63, 63, 0xffff);
return 0;
}
以上就是一个最简单的示例。先创建了一个画布,然后在 (63, 63)
画了一个点,颜色是 0xffff
。所有内容都渲染到了 canvas
画布上。
如何编译
建议使用 CMake 来构建你的应用。只要你喜欢,你仍然可以手动编译它。
有 2 部分源代码是必须要被编译进你的程序里的。
tGFX.c
是必须要的. 它提供主要的tGFX_create_canvas
函数.src/tGFX/${color_mode}/*.c
也是必须要的。 它提供一系列绘图操作的实现,比如tGFX_draw_pixel
。
另外也别忘记了将 头文件包含目录 /path/to/tGFX/include
指向你的程序。否则会提示找不到头文件的错误。
如何使用 CMake 编译
具体代码请参照这个示例: https://github.com/LanFly/tGFX/blob/master/examples/gfx-demo-x86/CMakeLists.txt
CMake 参数:
-
tGFX_USE_COLOR_MODE
描述: 设置要使用的颜色模式. 默认只能同时使用一种颜色模式。但是你仍然可以通过小小的改动实现同时使用多种颜色模式
默认值: 565 -
tGFX_NO_TOOLS
描述: 是否不编译工具类源码。
默认值: false
如何开发和调试嵌入式程序
tGFX 是平台无依赖的,所以你可以在 PC 上开发和调试你的绘图代码,比如在 MacOSX, Linux, Windows 上调试,调试好后再进行硬件相关的代码调试。
tGFX 提供一个在 MacOSX 上使用 X11 图形界面调试绘图代码的实例。请查看 https://github.com/LanFly/tGFX/blob/master/examples/gfx-demo-x86/README.md 如何使用。
如何提交你的贡献
任何类型的贡献都欢迎,比如 新特性支持,性能提升,Bug修复,文档,翻译,示例等。
要提交你的代码贡献,请在 github 上创建 PR.
其它类型的贡献,请通过 email: [email protected] 联系我。
tGFX 被设计成 轻量,快速,简单并且无依赖的,所以我们希望它的代码看起来是干净的,并且是人类阅读友好的。
下面是一些必须要遵守的约定:
- 代码风格
在提交你的 PR 前,请先运行./scripts/run-clang-format.sh
脚本以检查代码格式。然后修复所有提示有问题的代码,直到没有任何输出。
字体列表
- FONT_5X8
更多字体正在开发中。