资讯详情

GUI学习笔记-区别和简单概念

最近弄gui,非常郁闷,也看了很多前辈写的东西,俩字——“难”,一个是代码太多,看不进去,再一个是函数嵌套的很复杂。而且大多都带os,运用在项目中的话,还得再弄个os,本来是想随便找一个gui,修修改改,然后就直接用的,但现在不成了,没办法,只有应着头皮重新学。好在找了一个相对简单的dx_gui。这个的简单,在于可以在大循环中运行,不用os。ucgui虽然据说可以,但移植就很复杂,需要改很多东西,那代码看的头都大了。所以一怒之下,放弃那个。不过那个还是比较不错的,支持窗口重叠,具体原理到现在也没弄清。不过看看这些gui,倒明白了一些思路。下面就来分析一下。

起始这东西思想不是特别复杂,但弄起来这些窗口,控件,效果,各种响应处理以及各类也是相当复杂的。

那么首先来说说,gui与普通的画图函数有啥区别。虽然说,gui的意思是图形用户界面的大概念。如果利用普通的画点画线画方函数组合成界面,也应该算gui的范畴之中。但其实还是和普通的画图函数有一些区别,区别在于,对响应的处理和接口的区别。我们暂且把gui分成宏观和微观来说,宏观的gui 是一个定义,一个概念,我们不讨论。我们讨论的是程序中的微观gui。微观的gui首先是把功能当成函数封装了起来。比如,如果要用普通画图函数画一个窗口,那么首先,你要画一个矩形,然后画按钮,然后画各类的空间。最后,你把这些东西显示在lcd中,从外观上来看,你可以把它定义为一个窗口。而gui 呢?则不然,他要画一个窗口,怎么办。直接用一个函数。即画窗口函数。比如GUI_Draw_window(&Main_window);而这个函数的原形是啥样的呢?void GUI_Draw_window(style *the_window );当然,这个函数只是简单的用法,更为复杂的gui可能定义不同。但意思我想应该是差不多的。那就是画一个窗口,这个窗口是啥样的呢?那就是一个 style结构的参数。这个style结构中可以定义窗口的大小,坐标,背景颜色,等等一系列参数。或者是先画一个视窗,然后再视窗中放置各种控件和文字,最后将这个视窗形成的图像显示到lcd,不管怎么说,都是把窗口变成一个概念封装在一起最后显示到lcd上。还有一个区别,那就是响应问题,既然是窗口,肯定要显示信息,那么如何显示信息呢?普通的绘图函数是通过变量来显示信息的。比如在窗口中单击确定键,普通绘图函数则是通过改变变量来解决这个问题的。比如if(a按键没有按下)画矩形a();else 画矩形b;而gui则是通过回调会信息响应函数来解决这个问题的,if(a按键没有按下)信息响应(a=0);else 信息响应 (a=1);然后窗口根据信息,来判断显示啥,这个例子看其来好像都都一样,但是这是简单的信息,如果信息多了,而且有很多种组合,判断变量的方法就不好用了。如果你要显示的信息很简单,用显示函数就可以,如果做复杂显示的话,用gui比较方便,这看项目的功能需要。

说完了区别,在说几个概念。

首先是窗口,窗口是界面的主要组成,大家应该都不陌生。

控件,比如按钮,滑动条,可以对程序或窗口操作的东西叫控件。

信息处理机制,gui的信息处理是通过函数而不是变量来和窗口沟通的,比如按键,鼠标等等,都是通过函数传递参数,然后改变响应的窗口。

还有就是绘制这些元素

gui也是通过绘图函数,我觉得,gui只不过是一个应用层的绘图函数,他是要结果,而不要过程,但过程仍然需要绘图函数来完成。你需要做的就是在gui的接口,输入你需要的样子。

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台