9.3 文本绘制模式
文本的显示是通过设置前景色和背景色实现的。为了实现项目中各种文本绘制模式,用户还可以通过调用函数GUI_SetTextMode()来实现如下几种显示模式。 正常文本 默认情况下,文本的显示是采用的这种模式,前景色就是文本的显示颜色,而背景色根据文本字体大小来刷新所在的显示区。 通过将函数GUI_SetTextMode()的参数设置为GUI_TM_NORMAL或0,可以实现正常模式。 反转文本 这种显示模式是将文本的显示采用背景色,而文本的底色采用的是前景色,比如正常模式显示是黑底白字,而反转后就是白底黑字。 通过将函数GUI_SetTextMode()的参数设置为GUI_TM_REV,可以实现反转模式。 透明文本 简单的说,透明模式就是不需要背景色了,仅使用前景色显示文本,这样原有的背景效果不会受到影响,比如想在背景图片上面显示文本,透明模式就很适合,而使用正常模式,文本所在位置的图片就会被文本的背景色刷掉。 通过将函数GUI_SetTextMode()的参数设置为GUI_TM_TRANS,可以实现透明模式。 异或文本 采用文本的异或模式,文本显示也是透明的,不过文本的显示颜色是由文本显示所在区域的背景色决定的,即对背景色取反就是文本的显示颜色。这种模式经常用于1bpp颜色配置的显示屏,比如12864单色屏,白色取反就是黑色,黑色取反就是白色。其它颜色深度采用如下的公式进行计数: 新像素颜色 = 支持的颜色数 – 实际像素颜色 – 1 通过将函数GUI_SetTextMode()的参数设置为GUI_TM_XOR,可以实现异或模式。 透明反转文本 这种模式是透明模式和反转模式的结合体,与透明文本一样,它不会覆盖背景,而且和反转文本一样,该文本会反转显示。 通过将函数GUI_SetTextMode()的参数设置为GUI_TM_TRANS | GUI_TM_REV,可以实现透明反转模式。 下面是这5种显示模式的具体效果实例,非常具有代表性。我们将其移植到模拟器上面进行演示,具体移植方法,按照前面第6章和第8章的讲解,将GUIDEMO_Start.c文件里面的所有内容删掉并将下面所有代码复制到GUIDEMO_Start.c文件即可运行。 - #include "GUI.h"
-
- void MainTask(void)
- {
- /* 初始化emWin */
- GUI_Init();
-
- /* 设置字体 */
- GUI_SetFont(&GUI_Font8x16);
-
- /* 设置背景颜色 */
- GUI_SetBkColor(GUI_BLUE);
- GUI_Clear();
-
- /* 设置画笔的粗细以及颜色,只有矢量函数才能设置Size */
- GUI_SetPenSize(10);
- GUI_SetColor(GUI_RED);
- GUI_DrawLine(80, 10, 240, 90);
- GUI_DrawLine(80, 90, 240, 10);
- GUI_SetBkColor(GUI_BLACK);
- GUI_SetColor(GUI_WHITE);
-
- /* 设置正常模式 */
- GUI_SetTextMode(GUI_TM_NORMAL);
- GUI_DispStringHCenterAt("GUI_TM_NORMAL" , 160, 10);
-
- /* 翻转文本 */
- GUI_SetTextMode(GUI_TM_REV);
- GUI_DispStringHCenterAt("GUI_TM_REV" , 160, 26);
-
- /* 透明文本 */
- GUI_SetTextMode(GUI_TM_TRANS);
- GUI_DispStringHCenterAt("GUI_TM_TRANS" , 160, 42);
-
- /* 异或文本 */
- GUI_SetTextMode(GUI_TM_XOR);
- GUI_DispStringHCenterAt("GUI_TM_XOR" , 160, 58);
-
- /* 设置文本模式 */
- GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
- GUI_DispStringHCenterAt("GUI_TM_TRANS | GUI_TM_REV", 160, 74);
- while (1)
- {
- GUI_Delay(10);
- }
- }
复制代码实际显示效果如下: 关于文本设置方面还有一个函数GUI_SetTextStyle(),有兴趣的同学,也可以在模拟器上面练练手。 |