tGFX 一个轻量、简单、跨平台的二维图形绘图库

tGFX

/@qiniu/project/tGFX/preview.png

一个轻量、简单、快速、免费、无任何依赖、跨平台的图形库,二维图形绘图库。可运行在 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);

/@qiniu/project/tGFX/preview/font-5x7.png

中文字体正在开发中。

开始使用

第一步,选择一种要使用的颜色模式,然后包含它的头文件就可以了。

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 脚本以检查代码格式。然后修复所有提示有问题的代码,直到没有任何输出。

字体列表

  1. FONT_5X8

/@qiniu/project/tGFX/preview/font-5x7.png

更多字体正在开发中。

有想说的评论一句吧!