
MCU-renderer是MCUS的C语言图形库,专注于在单色和颜色LCD显示器上渲染非闪光,反相反的文本,并且资源较低。
要开始使用MCU-Renderer,请包括适当的标头文件。
为了初始化库,请调用相应的mr_xxx_init()函数。显示最初是关闭的,使您可以在第一个屏幕更新之前绘制。要打开显示器,请致电mr_xxx_set_display() 。在颜色LCD屏幕上,您还需要使用mr_xxx_set_sleep()禁用睡眠模式。
接下来,设置字体。如准备字体部分所述,您可以使用字体文件夹中的字体或准备自己的字体。
之后,设置一个由非重叠矩形组成的屏幕布局。更新屏幕时,这将避免任何闪烁。
要绘制一个填充的矩形,请致电mr_set_fill_color()以将填充颜色和mr_draw_rectangle()设置为实际绘图。您可以使用mr_get_color宏将Web颜色(例如FF2020)转换为MCU-Renderer颜色。
要在用户提供的uint8_t Framebuffer中绘制位图,请致电mr_set_stroke_color()设置前景颜色, mr_set_fill_color()设置背景颜色, mr_draw_bitmap()绘制位图。
要在用户提供的RGB565 Framebuffer中绘制图像,请致电mr_draw_image() 。
要绘制文本矩形,请致电mr_set_font()设置字体, mr_set_fill_color()设置背景颜色, mr_set_stroke_color()设置文本颜色, mr_draw_text() , mr_draw_text_utf8() , mr_draw_text_utf16()和mr_draw_traw_text_text_text_text_text_text_text_utf16(restf16) 分别。 offset参数指定图形矩形内文本的左上角:要水平中心文本,请使用mr_get_text_width() , mr_get_text_utf8_width()和mr_get_text_utf16_width()函数;要垂直中心文本,请使用mr_get_cap_height() (uppercase a), mr_get_ascent() (基线的顶部到基线),mr_get_descent mr_get_descent() (线的高度)(线的高度)(线的高度)( mr_get_line_height() (线的高度),获取当前字体的指标。确保在检索任何指标之前设置字体。
矩形边界可能不会超过显示大小。文本图函数的offset参数不限。
单色显示器和SDL需要屏幕刷新。要刷新屏幕,请在完成绘图后调用mr_xxx_refresh_screen() 。
请参阅示例文件夹。
(ASCII字符0x20-0x7e)
(字节中的尺寸)
| 字体 | Roboto 12 Px | Roboto 24 Px | Roboto 48 Px | Roboto 72 Px |
|---|---|---|---|---|
| adafruit_gfx/tft_espi(1 bpp) | 3832 | 14589 | 56677 | 129389 |
| U8G2(1 BPP) | 1508 | 3039 | 6632 | N/A。 |
| MCU-Renderer 1 BPP | 1473 | 2891 | 5902 | 9511 |
| MCU-Renderer 2 BPP | 2052 | 4162 | 8743 | 13969 |
| MCU-Renderer 3 BPP | 2695 | 5677 | 12128 | 18701 |
| MCU-Renderer 4 BPP | 3328 | 7329 | 15533 | 23676 |
| McUfont(4 BPP) | 3125 | 6296 | 12969 | 20045 |
| TFT_ESPI(VLW) | 7642 | 19387 | 65833 | 143333 |
为了将您的字体转换为MCU-Renderer格式,请使用fontconv工具(在发行版中以二进制形式提供),它使您可以将.bdf和.pcf bitmap字体以及.ttf ,.ttc, .ttc , .otf ,.otc,.otc, .otc和.woff vector vector fontss转换。
在数字版式中,通常将72点定义为96个像素。为了将矢量字体栅格化为给定的像素大小,请通过乘以因子4/3将像素大小转换为点大小。并非所有字体都遵循此规则,因此您可能需要调整此因素。
fontconv计算盖高度(大写字母a的高度)为上升高度(基线顶部到基线的顶部)和下降高度(基线到线的底部)之间的差异。在某些字体上,此计算不准确,因此您可以覆盖盖高度以达到正确的结果。您还可以覆盖上升高度和下降高度。