发新帖我要提问
12
返回列表
打印
[STM32F1]

基于enWin 的基础知识

[复制链接]
楼主: hanzhen654
手机看帖
扫描二维码
随时随地手机跟帖
21
hanzhen654|  楼主 | 2017-12-30 17:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
浏览官方演示例程。按照我们以上的步骤,默认编译的是 emWin 官方的演示例程,它向我们展示了使用 emWin 库制作出来的 GUI 效果,跟嵌入式平台相比,受液晶屏及CPU 运行速度的影响,一般其效果会好一些,读者可亲自品味一下,部分仿真效果图


使用特权

评论回复
22
aizaixiyuanqian| | 2017-12-31 10:01 | 只看该作者
想做一个美一点的界面不知道难度大不大?

使用特权

评论回复
23
hanzhen654|  楼主 | 2017-12-31 23:03 | 只看该作者
aizaixiyuanqian 发表于 2017-12-31 10:01
想做一个美一点的界面不知道难度大不大?

好好学习,难度不大

使用特权

评论回复
24
hanzhen654|  楼主 | 2017-12-31 23:04 | 只看该作者
要在 LCD 上显示文本,只需调用例程 GUI_DispString() 并以要显示的文本作为参数即可。例如:
GUI_DispString("Hello world!");
上述代码将在当前文本位置显示文本 “Hello world”。然而,正如我们将看到的,有很多例程可以
使用不同字体或在特定位置显示文本。此外,它不仅可以写字符串,还可以写十进制、十六进制以及
二进制数值进行显示。尽管图形显示通常以字节为向导,文本可以定位在屏幕的任何像素上,而不仅
仅按字节定位。

使用特权

评论回复
25
hanzhen654|  楼主 | 2017-12-31 23:04 | 只看该作者
将文本置于所选位置
这可以通过例程 GUI_GotoXY() 实现,如下面的例子所示:
GUI_GotoXY(10,10);// Set text position (in pixels)
GUI_DispString("Hello world!");// Show text

使用特权

评论回复
26
hanzhen654|  楼主 | 2017-12-31 23:08 | 只看该作者
GUI_DispChar()
描述在当前窗口的当前文本位置处,使用当前字体显示单个字符。
原型
void GUI_DispChar(U16 c);
其他信息这是显示单个字符的基本例程。所有其他显示例程 (GUI_DispCharAt()、 GUI_DispString()等)都要调用这个例程来输出单个字符。字符是否可用取决于所选择的字体。如果当前字体中该字符不可用,则不会有任何显示。
示例在屏幕上显示一个大写 “A” :
GUI_DispChar('A');

使用特权

评论回复
27
hanzhen654|  楼主 | 2017-12-31 23:09 | 只看该作者
GUI_DispCharAt()
描述在当前窗口的指定位置处,使用当前字体显示单个字符。
原型
void GUI_DispCharAt(U16 c, I16P x, I16P y);
附加信息
所显示字符的左上角在指定的 (X,Y) 位置。
使用例程 GUI_DispChar() 写字符。
如果当前字体中该字符不可用,则不会有任何显示。
示例
在屏幕左上角显示一个大写 “A”:
GUI_DispCharAt('A',0,0);

使用特权

评论回复
28
hanzhen654|  楼主 | 2017-12-31 23:14 | 只看该作者
GUI_DispChars()
描述
在当前窗口的当前文本位置处,使用当前字体按指定次数显示字符。
原型
void GUI_DispChars(U16 c, int Cnt);
其他信息
使用例程 GUI_DispChar() 写字符。
如果当前字体中该字符不可用,则不会有任何显示。
示例
在屏幕上显示 “******************************”:
GUI_DispChars('*', 30);

使用特权

评论回复
29
hanzhen654|  楼主 | 2017-12-31 23:14 | 只看该作者
GUI_DispString()
描述
在当前窗口的当前文本位置处,使用当前字体显示作为参数的字符串。
原型
void GUI_DispString(const char GUI_FAR * s);
其他信息
字符串可以包括控制字符 “\n”。该控制字符把当前文本位置移至下一行的开始。
示例
在屏幕上显示 “Hello world”并在下一行显示 “Next line”:
GUI_DispString("Hello world"); //Disp text
GUI_DispString("\nNext line"); //Disp text

使用特权

评论回复
30
hanzhen654|  楼主 | 2017-12-31 23:15 | 只看该作者
GUI_DispStringAt()
描述
在当前窗口的指定位置处,使用当前字体显示作为参数的字符串。
原型
void GUI_DispStringAt(const char GUI_FAR * s, int x, int y);
示例
在屏幕位置 (50,20) 处显示 “Position 50,20”:
GUI_DispStringAt("Position 50,20", 50, 20); // Disp text

使用特权

评论回复
31
hanzhen654|  楼主 | 2017-12-31 23:16 | 只看该作者
GUI_DispStringHCenterAt()
描述
在当前窗口的指定位置处,使用当前字体水平居中显示作为参数的字符串。
原型
void GUI_DispStringHCenterAt(const char GUI_FAR * s, int x, int y);
参数:
s 显示的字符串。
x 要写入的客户端窗口 X 位置 (单位:像素)。
y 要写入的客户端窗口 Y 位置 (单位:像素)。

使用特权

评论回复
32
hanzhen654|  楼主 | 2017-12-31 23:21 | 只看该作者
GUI_DispStringInRect()
描述
在当前窗口指定的矩形区域内的指定位置处,使用当前字体显示作为参数的字符串。
原型
void GUI_DispStringInRect(const char GUI_FAR * s,GUI_RECT * pRect,int Align);
s 显示的字符串。
pRect 要写入的客户端窗口矩形区域 (单位:像素)。
Align
对齐标记,可以通过 “ OR ”操作进行组合。垂直对齐和水平对齐标记应该组合使用。可用的标记有:
垂直对齐: GUI_TA_TOP 、 GUI_TA_BOTTOM 、 GUI_TA_VCENTER 。
水平对齐: GUI_TA_LEFT 、 GUI_TA_RIGHT 、 GUI_TA_HCENTER
示例
在当前窗口的水平和垂直居中位置显示字 “Text”:
GUI_RECT rClient;
GUI_GetClientRect(&rClient);
GUI_DispStringInRect("Text", &rClient, GUI_TA_HCENTER | GUI_TA_VCENTER);

使用特权

评论回复
33
hanzhen654|  楼主 | 2017-12-31 23:25 | 只看该作者
GUI_DispStringInRectEx()
描述
在当前窗口指定的矩形区域内的指定位置处,使用当前字体显示作为参数的字符串,并可旋转(可选)。
原型
void GUI_DispStringInRectEx(const char * s,GUI_RECT * pRect,int TextAlign,int MaxLen,const GUI_ROTATION * pLCD_Api);
参数:
s 显示的字符串。
pRect 要写入的客户端窗口矩形区域 (单位:像素)。
TextAlign对齐标记,可以通过 “ OR ”操作进行组合。垂直对齐和水平对齐标记应该组合使用。可用的标记有:垂直对齐:
GUI_TA_TOP 、 GUI_TA_BOTTOM 、 GUI_TA_VCENTER 。
水平对齐: GUI_TA_LEFT 、 GUI_TA_RIGHT 、 GUI_TA_HCENTER 。
  MaxLen 显示的最大字符数。
pLCD_Api
GUI_ROTATE_0 不旋转文本。从左到右显示。
GUI_ROTATE_180 180 度旋转文本。
GUI_ROTATE_CCW 逆时针旋转文本。
GUI_ROTATE_CW 顺时针旋转文本。

使用特权

评论回复
34
hanzhen654|  楼主 | 2017-12-31 23:25 | 只看该作者
在指定的矩形区域内水平和垂直居中处显示字 “Text”:
GUI_RECT Rect = {10, 10, 40, 80};
char acText[] = "Rotated\ntext";
GUI_SetTextMode(GUI_TM_XOR);
GUI_FillRectEx(&Rect);
GUI_DispStringInRectEx(acText,
&Rect,
GUI_TA_HCENTER | GUI_TA_VCENTER,
strlen(acText),
GUI_ROTATE_CCW);

使用特权

评论回复
35
hanzhen654|  楼主 | 2017-12-31 23:28 | 只看该作者
GUI_DispStringInRectWrap()
描述
在当前窗口指定的矩形区域内的指定位置处,使用当前字体显示字符串,并可自动换行 (可选)。
原型
void GUI_DispStringInRectWrap(const char GUI_UNI_PTR * s,
GUI_RECT * pRect,
int TextAlign,
GUI_WRAPMODE WrapMode);
示例
在指定的矩形区域内水平和垂直居中处显示字 “Text”,并进行字换行:
int i;
char acText[] = "This example demonstrates text wrapping";
GUI_RECT Rect = {10, 10, 59, 59};
GUI_WRAPMODE aWm[] = {GUI_WRAPMODE_NONE,
GUI_WRAPMODE_CHAR,
GUI_WRAPMODE_WORD};
GUI_SetTextMode(GUI_TM_TRANS);
for (i = 0; i < 3; i++) {
GUI_SetColor(GUI_BLUE);
GUI_FillRectEx(&Rect);
GUI_SetColor(GUI_WHITE);
GUI_DispStringInRectWrap(acText, &Rect, GUI_TA_LEFT, aWm[i]);
Rect.x0 += 60;
Rect.x1 += 60;
}

使用特权

评论回复
36
hanzhen654|  楼主 | 2017-12-31 23:40 | 只看该作者
GUI_DispStringLen()
描述
在当前窗口的当前文本位置处,使用当前字体按指定字符数显示作为参数的字符串。
原型
void GUI_DispStringLen(const char GUI_FAR * s, int Len);
参数:
s 显示的字符串。应该以 “ \0 ”作为 8 位字符数组的结束标记。允许用 NULL 作为参数。
Len 显示的字符数。

使用特权

评论回复
37
hanzhen654|  楼主 | 2017-12-31 23:41 | 只看该作者
GUI_WrapGetNumLines()
描述
返回设置自动换行模式的指定文本的行数。
原型
int GUI_WrapGetNumLines(const char GUI_UNI_PTR * pText,
int xSize,
GUI_WRAPMODE WrapMode);
pText 显示的字符串。应该以 “ \0 ”作为 8 位字符数组的结束标记。允许用 NULL 作为参数。
xSize X-size 用以绘制文本。
WrapMode (参见下表)
GUI_WRAPMODE_NONE 不执行自动换行。
GUI_WRAPMODE_WORD 根据字对文本进行自动换行。
GUI_WRAPMODE_CHAR 根据字符对文本进行自动换行。

使用特权

评论回复
38
hanzhen654|  楼主 | 2017-12-31 23:42 | 只看该作者
显示正常、反转、透明、异或以及透明反转文本:
GUI_SetFont(&GUI_Font8x16);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
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);

使用特权

评论回复
39
hanzhen654|  楼主 | 2017-12-31 23:42 | 只看该作者
GUI_SetTextMode()
描述
按照指定的参数设置文本模式。
原型
int GUI_SetTextMode(int TextMode);
TextMode 设置的文本模式,可以是 TEXTMODE 标记的任意组合。
数 参数 TextMode  的允许值 (可以通过 “OR ”操作进行组合)
GUI_TEXTMODE_NORMAL 设置为显示正常文本。这是默认设置,该数值等同于 0 。
GUI_TEXTMODE_REV 设置为显示反转文本。
GUI_TEXTMODE_TRANS 设置为显示透明文本。
GUI_TEXTMODE_XOR 设置为反相显示的文本。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则