uCGUI学习笔记之显示文本


其实我是以emwin为平台进行在PC上模拟的,但是emwin与ucgui基本一样,两者唯一的区别就是一个用得好死库文件,一个给了源代码。百度了下现在用户图形界面库的不同版本,大概如下:ZlgGUI适合于低端处理器;uCGUI应用最广泛,易于移植,被大部分中低端处理器采用;openGUI的源码为汇编编写,适用于通用PC机,可在各种操作系统移植、Microwindows兼容windows。

        uCGUI对CPU要求不限,底层为ANSI C编写;带有图库算法,不需要浮点算法,速度快;支持各种LCD驱动;视窗显示和管理工作。本来我是想直接在STM32上直接进行GUI设计,但是读了人家作品的源码之后发现还是要系统的学习下ucgui,因为库函数实在太多,多到不知道它是用来干嘛的,我要用的函数该怎么找,这样就给设计带来了很大的困难。值得庆幸的是,ucGUI/emwin的源码里都有VC的Demo工程,并且专门做了一系列Sample的C文件,供初学者熟悉库函数。

       第一次接触ucGUI?经典的Hello World例程是必经之路!

[plain]  view plain  copy
  1. #include "GUI.h"  
  2.   
  3. void MainTask(void){  
  4.          
  5.         GUI_Init();  
  6.         GUI_DispString("Hello World");  
  7.         while(1);  
  8. }  
    GUI_Init()函数:原形 int  GUI_Init(void);初始化emwin内部数据结构和变量,所有GUI操作前必须执行初始化操作!初始化成功返回0,出错则返回其他值。

    既然有Init就应该有Exit操作:GUI_Exit();从存储器清除emwin内部数据,以便进一步调用GUI_Init()。

    这里显示用到的API属于文本API,关于文本API的详细讲解请自行查阅emwin用户手册。下表列出常用文本API及其作用。

    

    API太多,不逐个讲解,只挑选我认为较重要的跟大家浅析。

    GUI_SetTextMode() :选择文本绘制模式。默认情况下在所选窗口的当前文本位置,使用所选字体以正常文本模式写入文本。正常文本模式意思是指文本覆盖已经显示的任何内容。在这种模式下,活动位元使用前景颜色写入,而非活动位元用背景颜色写入。但在很多情况下,我们不希望背景被覆盖,那样会很丑的!emWin为此提供了四种可以组合使用的标记 (一种默认加三种修改标记):
                    ⒈正常文本:通过指定GUI_TEXTMODE_NORMAL或0,可以正常显示文本。
                    ⒉反转文本:通过指定GUI_TEXTMODE_REV,可以反转显示文本。即黑底白字显示方式将变为白底黑字显示。
                    ⒊透明文本:通过指定GUI_TEXTMODE_TRANS,可以显示为透明文本。透明文本表示文本写在屏幕上已经可见的内容之上。不同之处在于,屏幕上原有的内容仍                                               然可见,而在正常文本中,背景会替换为当前选择的背景色。
                    ⒋异或文本:通过指定GUI_TEXTMODE_XOR,可以使用异或模式显示文本。通常情况下,用白色绘制的 (实际字符)显示是反相的。如果背景色是黑色,效果与                                               默认模式 (正常文本)是一样的。如果背景是白色,输出与反转文本一样。如果使用彩色,反相的像素由下式计算:新像素颜色=颜色的值–实际像素                                               颜色–1(其实这个我们不用管啦)。
                    ⒌透明反转文本:通过指定GUI_TEXTMODE_TRANS | GUI_TEXTMODE_REV,可以显示为透明反转文本。与透明文本一样,它不会覆盖背景,而且和反转文本一                                                       样,该文本会反转显示。

如此一来文本显示就自然的多。

    GUI_Clear(): 清除窗口。原型  void GUI_Clear(void);   如果没有定义窗口,则当前窗口为整个显示区。在这种情况下,整个显示区都会被清除。
    GUI_DispCEOL():清除当前窗口 (或显示)从当前文本位置到行末的内容,高度为当前字体高度。原型  void GUI_DispCEOL(void);举个例子来说,在屏幕上显示“Hello world”,等 待1秒钟,然后在同一位置处显示“Hi”,代替原先显示的字符串并且将多出的那些都清除就靠这个函数啦!

[plain]  view plain  copy
  1. GUI_DispStringAt("Hello World",0,0);  
  2. GUI_Delay(1000);  
  3. GUI_DispStringAt("Hi",0,0);  
  4. GUI_DispCEOL();  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值