渲染一个字

以下程序的功能是渲染一个红色的“字”并将它保存至 PNG 文件中,使用的字体为宋体。

  1. #include <LCUI_Build.h>
  2. #include <LCUI/LCUI.h>
  3. #include <LCUI/graph.h>
  4. #include <LCUI/font.h>
  5. int main( void )
  6. {
  7. int ret, fid;
  8. LCUI_Graph img;
  9. LCUI_FontBitmap bmp;
  10. LCUI_Pos pos = {25, 25};
  11. /* 初始化字体处理功能 */
  12. LCUI_InitFont();
  13. /* 创建一个图像,并使用灰色填充 */
  14. Graph_Init( &img );
  15. Graph_Create( &img, 100, 100 );
  16. Graph_FillRect( &img, RGB( 240, 240, 240 ), NULL, FALSE );
  17. /* 载入字体文件 */
  18. ret = LCUIFont_LoadFile( "C:/Windows/fonts/simsun.ttc" );
  19. while( ret == 0 ) {
  20. /* 获取字体ID */
  21. fid = LCUIFont_GetId( "SimSun", NULL );
  22. if( fid < 0 ) {
  23. break;
  24. }
  25. /* 载入对应的文字位图,大小为 48 像素 */
  26. ret = FontBitmap_Load( &bmp, L'字', fid, 48 );
  27. if( ret != 0 ) {
  28. break;
  29. }
  30. /* 绘制红色文字到图像上 */
  31. FontBitmap_Mix( &img, pos, &bmp, RGB( 255, 0, 0 ) );
  32. Graph_WritePNG( "test_char_render.png", &img );
  33. /* 释放内存资源 */
  34. FontBitmap_Free( &bmp );
  35. Graph_Free( &img );
  36. break;
  37. }
  38. /* 退出字体处理功能 */
  39. LCUI_ExitFont();
  40. return ret;
  41. }

编译运行后,可以在程序所在工作目录下找到 test_char_render.png 文件,打开它可看到如下图所示的内容:

绘制出来的文字

在绘制文字时都需要指定字体的 ID,这个 ID 标识了字体的字族和风格,如果要使用默认的字体,可以使用 -1 作为 ID。字体位图数据是 LCUI_FontBitmap 类型,可以用 FontBitmap_Mix() 函数将该字体位图绘制到指定的图像上,该函数支持自定义字体颜色。

原文: https://docs.lcui.lc-soft.io/zh-cn/font_and_text/render_char.html