EmWin 字体相关函数

学习笔记:-----------------------------------------------------------

1:const GUI_FONT * GUI_GetFont(void) ;
返回值:当前选择的字体指针

2:int GUI_GetCharDistX(U16 c); 

参数:  C   计算宽度所基于的字符

返回值:用于显示当前所选字体中指定字符的宽度像素 (X 大小) 

3:int GUI_GetFontDistY(void);

返回值:当前所选字体的 Y 间距
4:void GUI_GetFontInfo(const GUI_FONT*pFont, GUI_FONTINFO* pfi);

描述:  计算特定字体的 GUI_FONTINFO 结构的指针
参数:  pFont  指向该字体

     pfi    指向GUI_FONTINFO结构

GUI_FONTINFO 结构的定义如下所示:
typedef struct {
    U16 Flags;
} GUI_FONTINFO;
Flags取值-----------------------
GUI_FONTINFO_FLAG_PROP
GUI_FONTINFO_FLAG_MONO
GUI_FONTINFO_FLAG_AA
GUI_FONTINFO_FLAG_AA2
GUI_FONTINFO_FLAG_AA4

5:int GUI_GetFontSizeY(void);
返回值:当前所选字体的高度像素(Y大小)

6:int GUI_GetLeadingBlankCols(U16 c);
参数:  C    要使用的字符

返回值:当前所选字体给定字符的前导空格像素列数

7:int GUI_GetStringDistX(const char GUI_FAR *s);
参数:  s    指向该字符串

返回值:用于显示当前所选字体中指定字符串的 X 大小

8:void GUI_GetTextExtend(GUI_RECT* pRect, const char* s, int Len);
描述:  计算使用当前字体的给定字符串的大小

参数:  pRect   指向存储结果的GUI_RECT_structure

     s     指向该字符串

     Len    字符串的字符数

9:int GUI_GetTrailingBlankCols(U16 c);
参数:  c    要使用的 字符

返回值:当前所选字体中给定字符的后导空格像素列数

10:int GUI_GetYDistOfFont(const GUI_FONT* pFont);
参数:   pFont   指向该字体

返回值 :特定字体的 Y 间距
11:int GUI_GetYSizeOfFont(const GUI_FONT* pFont);
参数:   pFont    指向该字体

返回值:特定字体的 Y 大小
12:char GUI_IsInFont(const GUI_FONT * pFont, U16 c) ;
描述:评估特定字体中是否包含指定的字符
参数:  pFont    指向该字体

     c      要搜索的字符

13:void GUI_SetDefaultFont(const GUI_FONT GUI_UNI_PTR * pFont);
描述:设置 GUI_Init() 之后使用的默认字体

参数:  pFont  指向要使用的字体

转载于:https://www.cnblogs.com/HumbleFish/p/9147647.html

<think>好的,我现在需要帮助用户解决在emWin中调整字体大小的问题。首先,我得回想一下emWin相关知识,特别是字体处理的部分。根据用户提供的引用内容,emWin支持多种字体类型,包括位图和TrueType,而调整字体大小可能因字体类型不同而有所区别。 用户的问题是如何在emWin中调整字体大小,可能需要示例代码或配置方法。首先,我需要确认emWin字体系统结构。引用中提到了位图字体和TrueType字体。位图字体通常是固定大小的,每个字符有预定义的位图,所以直接调整大小可能导致质量下降。而TrueType是矢量字体,可以无级缩放。 所以,调整字体大小的方法可能分为两种情况:使用位图字体时,需要选择不同尺寸的预存字体;而使用TrueType时,可以通过函数直接设置大小。接下来,我需要查证emWin的API,比如是否有设置字体大小的函数,比如GUI_SetFont()用于切换字体,而TrueType可能需要使用GUI_TTF_SetDistXY()或类似的函数来调整尺寸。 然后,考虑用户可能需要具体的步骤和代码示例。例如,使用位图字体时,可能需要先创建不同大小的字体资源,然后在代码中切换。而使用TrueType的话,可能需要加载字体文件并设置大小参数。需要确保提供的代码示例正确,比如使用GUI_TTF_CreateFont()函数,并传递适当的大小参数。 另外,用户提供的引用中提到字体可以位于外部介质,这可能涉及加载字体的方法,但用户主要问的是调整大小,所以可能需要重点放在设置已加载字体的大小上。同时要注意,某些配置可能需要启用抗锯齿或特定功能,这可能会影响字体显示的效果。 最后,要总结两种方法的适用场景,帮助用户根据需求选择合适的方式。比如,位图字体适合需要快速渲染且尺寸固定的情况,而TrueType适合需要灵活调整大小的场景。同时,提醒用户注意性能差异和内存占用的问题。</think>在 emWin 中调整字体大小主要通过以下两种方法实现: ### 一、位图字体设置 1. **预编译字体切换** 使用 `GUI_SetFont()` 函数切换不同尺寸的预编译字体(如 GUI_Font16_ASCII) ```c GUI_SetFont(&GUI_Font16_ASCII); // 设置16像素高度字体 GUI_DispStringAt("Hello World!", 10, 10); ``` 2. **外部位图字体加载** 需先通过字体转换工具生成不同尺寸的C文件,再通过文件系统加载: ```c GUI_FONT* pFont; pFont = GUI_LoadFontFile("font20.dta"); // 加载20像素字体文件 GUI_SetFont(pFont); ``` ### 二、TrueType 矢量字体设置[^1] ```c GUI_TTF_CS *pTTF; // 创建矢量字体对象(支持动态尺寸) pTTF = GUI_TTF_CreateFont("arial.ttf", 24, GUI_TTF_STYLE_NORMAL); GUI_SetFont(pTTF->pFont); GUI_DispStringAt("可缩放文本", 50, 50); ``` ### 关键配置说明 1. **抗锯齿设置** 在 `GUIConf.h` 中启用抗锯齿支持: ```c #define GUI_SUPPORT_AA 1 // 启用抗锯齿 ``` 2. **内存分配** 矢量字体需要更大的内存池配置: ```c #define GUI_NUMBYTES (1024 * 50) // 在 GUIConf.h 中调整 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值