图形用户界面GUI的绘制方法及装置与流程

文档序号:12157339阅读:750来源:国知局
图形用户界面GUI的绘制方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种图形用户界面GUI的绘制方法及装置。



背景技术:

嵌入式图形用户界面GUI系统作为嵌入式系统中的一大关键技术,其性能的好坏、界面的美观程度,直接影响着嵌入式产品的用户体验效果。然而,由于可用设备资源和操作系统提供的底层机制有限,使得嵌入式系统上GUI的开发无法像PC平台上应用程序的开发那么容易和方便。这样一来,为具有不同硬件配置的目标嵌入式产品以及嵌入式操作系统选择完备、适合的GUI支持系统,成为颇具挑战性的难题。

目前,嵌入式系统上GUI的开发方式主要有两种:一是针对某种特定的嵌入式系统采用现有的GUI库的开发方式,如Microsoft的WinCE、TrollTech的Qt和GNU的GTK+,这种方式一般可以基于GUI库来提供完整的解决方案和应用。但是,通用的GUI库相对比较庞大,使用时一般需要对其进行裁剪和个性化定制,并且往往要支出额外的成本来获得软件授权;二是开发商针对嵌入式系统专门设计的嵌入式图形中间件,如MiniGUI、SwellSoftware的PEG和TilconSoftware的Tilcon产品等。此类方式的GUI虽然占用资源较小,容易满足嵌入式系统的实时性和个性化需求,但是该方式一般由专业公司维护,只适合功能单一的嵌入式系统,存在拓展性不够的缺点。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明提供了一种图形用户界面GUI的绘制方法及装置,以至少解决了相关技术中需要在编译过程中解析用于绘制GUI的参数而导致程序执行效率低的问题。

根据本发明的一个方面,提供了一种图形用户界面GUI的绘制方法,包括:在编译用于绘制上述GUI的编译程序之前,通过对用于绘制上述GUI的标记语言文件进行解析,获取用于绘制上述GUI的参数;将获取的上述参数编译到上述编译程序中;通过运行编译了上述参数的上述编译程序,绘制上述GUI。

进一步地,通过对用于绘制上述GUI的标记语言文件进行解析,获取用于绘制上述GUI的参数包括:对用于绘制上述GUI的所有标记语言文件按照界面层次进行分级解析,得到二进制解析结果;按照解析顺序缓存上述二进制解析结果;从上述二进制解析结果中提取用于绘制上述GUI的参数。

进一步地,在按照解析顺序缓存上述二进制解析结果之后,上述方法还包括:将上述二进制解析结果按照预先设定的排序规则重新排序,其中,在将上述二进制解析结果按照上述预先设定的排序规则重新排序之后,通过匹配上述预先设定的排序规则,从重新排序的二进制解析结果中提取用于绘制上述GUI的结构化数据。

进一步地,通过运行编译了上述参数的上述编译程序,绘制上述GUI包括:在上述编译程序运行过程中,检索上述参数;将上述参数传递给封装好的图形函数接口;通过上述图形函数接口从多个预先设定的GUI库中的至少之一中调用与上述参数相匹配的控件结构;使用调用的上述控件结构绘制上述GUI。

进一步地,通过运行编译了上述参数的上述编译程序,绘制上述GUI包括:通过封装好的系统函数接口从多种预先设定的运行环境中调用绘制当前的上述GUI所需要的运行环境,其中,上述运行环境包括以下至少之一:操作系统和硬件资源。

根据本发明的另一方面,提供了一种图形用户界面GUI的绘制装置,包括:获取单元,用于在编译用于绘制上述GUI的编译程序之前,通过对用于绘制上述GUI的标记语言文件进行解析,获取用于绘制上述GUI的参数;编译单元,用于将获取的上述参数编译到上述编译程序中;绘制单元,用于通过运行编译了上述参数的上述编译程序,绘制上述GUI。

进一步地,上述获取单元包括:解析模块,用于对用于绘制上述GUI的所有标记语言文件按照界面层次进行分级解析,得到二进制解析结果;缓存模块,用于按照解析顺序缓存上述二进制解析结果;提取模块,用于从上述二进制解析结果中提取用于绘制上述GUI的参数。

进一步地,上述装置还包括:排序单元,用于在按照解析顺序缓存上述二进制解析结果之后,将上述二进制解析结果按照预先设定的排序规则重新排序,其中,上述提取模块还用于在将上述二进制解析结果按照上述预先设定的排序规则重新排序之后,通过匹配上述预先设定的排序规则,从重新排序的二进制解析结果中提取用于绘制上述GUI的结构化数据。

进一步地,上述绘制单元包括:检索模块,用于在上述编译程序运行过程中,检索上述参数;传递模块,用于将上述参数传递给封装好的图形函数接口;第一调用模块,用于通过上述图形函数接口从多个预先设定的GUI库中的至少之一中调用与上述参数相匹配的控件结构;绘制模块,用于使用调用的上述控件结构绘制上述GUI。

进一步地,上述绘制单元包括:第二调用模块,用于通过封装好的系统函数接口从多种预先设定的运行环境中调用绘制当前的上述GUI所需要的运行环境,其中,上述运行环境包括以下至少之一:操作系统和硬件资源。

通过本发明,采用在编译用于绘制GUI的编译程序之前,通过对用于绘制GUI的 标记语言文件进行解析,获取用于绘制GUI的参数;将获取的参数编译到编译程序中;通过运行编译了参数的编译程序,绘制GU,解决了相关技术中需要在编译过程中解析用于绘制GUI的参数而导致程序执行效率低的问题,进而达到了提高用于绘制GUI的程序的执行效率的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的图形用户界面GUI的绘制方法的流程图;

图2是根据本发明实施例的GUI在整个系统中的位置的示意图;

图3是根据本发明实施例的脚本解析层解析XML文档的流程图;

图4是根据本发明可选实施例的图形用户界面GUI的绘制方法的流程图;以及

图5是根据本发明实施例的图形用户界面GUI的绘制装置的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种图形用户界面GUI的绘制方法,图1是根据本发明实施例的图形用户界面GUI的绘制方法的流程图,如图1所示,该流程包括如下步骤:

步骤S102,在编译用于绘制GUI的编译程序之前,通过对用于绘制GUI的标记语言文件进行解析,获取用于绘制GUI的参数;

步骤S104,将获取的参数编译到编译程序中;

步骤S106,通过运行编译了参数的编译程序,绘制GUI。

为了实现GUI定义与具体程序设计语言和开发平台的无关性,所有的GUI参数与资源都是通过标记语言描述方法来定义的。因此,在绘制GUI时,需要对用于绘制GUI的标记语言文件进行解析,将其解析为汇编语言或二进制语言文件。

在本发明实施例中,用于绘制GUI的GUI系统架构主要包括:脚本解析层、图形 层和系统封装接口层三个部分。实施时,脚本解析层可以在编译用于绘制GUI的编译程序之前,对用于绘制GUI的标记语言文件进行解析,以获取用于绘制GUI的参数,并将解析得到的参数编译到程序中。这样,在程序执行过程中,可以提取相应的参数来绘制图形界面。

由于现有技术方案是在程序执行过程中对标记语言文件进行解析以获取用于绘制GUI的参数的,导致程序的执行效率较低。而本发明提供的技术方案则是在程序编译之前对标记语言文件进行解析以获取用于绘制GUI的参数的,这样,在绘制过程中可以直接提取编译在程序中的参数,大幅度提高了程序的执行效率。

通过上述步骤,解决了相关技术中需要在编译过程中解析用于绘制GUI的参数而导致程序执行效率低的问题,进而达到了提高用于绘制GUI的程序的执行效率的效果。

可选地,通过对用于绘制GUI的标记语言文件进行解析,获取用于绘制GUI的参数包括:

S2,对用于绘制GUI的所有标记语言文件按照界面层次进行分级解析,得到二进制解析结果;

S4,按照解析顺序缓存二进制解析结果;

S6,从二进制解析结果中提取用于绘制GUI的参数。

一方面,将标记语言描述的参数解析为二进制语言描述的参数,在编译时,可以直接将机器可识别的二进制参数编译到编译程序中;另一方面,按照界面层次对所有标记语言文件进行解析,可以简化解析逻辑,提高解析效率,同时可以防止由于漏解析或重复解析而无法绘制出正确的GUI。

可选地,在按照解析顺序缓存二进制解析结果之后,上述方法还包括:

S8,将二进制解析结果按照预先设定的排序规则重新排序,其中,在将二进制解析结果按照预先设定的排序规则重新排序之后,通过匹配预先设定的排序规则,从重新排序的二进制解析结果中提取用于绘制GUI的结构化数据。

也即,脚本解析层在用于绘制GUI的编译程序之前,对描述GUI的所有标记语言文件按照界面层次进行分级解析,将解析后的数据按照预先设定的排序规则(如特定的数据排列协议)进行重新排列后得到一个二进制文件,并缓存之。在加载用于绘制GUI的程序的过程中,通过匹配前述的预先设定的排序规则,从二进制文件中提取出结构化数据,分别填充到一些预先设定的数据结构中。这样,在程序在执行过程中,如果需要绘制特定的图形界面,则只需要从数据结构中检索相应的GUI所对应的参数即可,从而提高了参数的加载速度以及程序的编译效率。

可选地,通过运行编译了参数的编译程序,绘制GUI包括:

S10,在编译程序运行过程中,检索参数;

S12,将参数传递给封装好的图形函数接口;

S14,通过图形函数接口从多个预先设定的GUI库中的至少之一中调用与参数相匹配的控件结构;

S16,使用调用的控件结构绘制GUI。

也即,在编译程序运行过程中,可以检索编译在编译程序中的各个参数,并将检索到的参数传递给在图形层预先封装好的图形函数接口,通过这个图形函数接口可以从多个预先设定的GUI库中的至少之一中调用与参数相匹配的控件结构,进而直接使用调用的控件结构绘制GUI。

其中,在图形层预先封装好的图形函数接口是对组成GUI的各种控件的封装。这些控件可以分为3大类,分别为Control、GDI、Image decoding。Control是构成GUI的基本控件,常用的主要有Button、Label、Combobox、List、Textbox、Timer等;GDI是实现多窗口系统的一项关键技术,即剪切域技术,通过剪切域可以在嵌入式平台上显示复杂的窗口,保证一个窗口的绘制不会影响到其它窗口的绘制;Image decoding是对不同类型图片的解码,支持的图片类型有BMP、GIF、JEPG和PNG。

由于相关技术所提供的技术方案并未封装图形函数接口,导致GUI系统架构只能支持单一类型的GUI库;而本发明设计的GUI系统架构可以在程序执行过程中,从特定的数据结构中检索到界面参数,并传递给封装好的函数接口,以适配多种GUI库,从而完成相应的GUI绘制任务,提高了系统的灵活性,同时结构清晰,占用资源更少,性能更高效,更易于维护。

在本发明实施例中,GUI系统架构中的图形层可以适配现有的GUI库,也可以封装芯片厂家提供的软件接口。简单的绘图操作可以直接调用芯片厂家提供的软件接口,较为复杂的控件绘制操作可以通过封装好的各芯片厂家所提供的软件接口实现。

可选地,通过运行编译了参数的编译程序,绘制GUI包括:

S18,通过封装好的系统函数接口从多种预先设定的运行环境中调用绘制当前的GUI所需要的运行环境,其中,运行环境包括以下至少之一:操作系统和硬件资源。

系统函数接口是在系统封装接口层对操作系统和硬件平台的封装。GUI系统架构用到的所有系统资源,都是通过调用系统封装接口层的系统函数接口得到的。系统封装接口层的系统函数接口包括操作系统相关接口,如内存管理、进程调度、定时器管理、信号量、文件系统等,以及平台显示、驱动等相关接口,如fill、blit、surface等。另外,系统封装接口层位于操作系统和应用层之间,用来隔离下层使用的不同的操作系统。

实施时,在GUI绘制过程中,调用系统封装接口层的系统函数接口,完成操作系 统或平台驱动等相关接口的调用,如内存的申请与释放、信号量的创建与释放、线程的创建与释放等。通过系统封装接口层的系统函数接口为GUI适配特定的操作系统和硬件平台,最终实现GUI的绘制与显示。

本发明通过设计一种轻量级的嵌入式GUI系统架构,可以实现在GUI绘制过程适配多种图形库、多种操作系统和多种硬件平台的目的,以及达到绘制GUI时,更简单、更灵活、结构更清晰、占用资源更小且反应速度更快,更易于维护的效果。

图2是根据本发明实施例的GUI在整个系统中的位置的示意图,如图2所示,GUI系统架构作为图形库系统,为上层APP的GUI提供服务接口(即图形层封装的图形函数接口),为下层的操作系统和硬件平台提供系统封装接口层封装的相应接口。

图3是根据本发明实施例的脚本解析层解析XML文档的流程图,如图3所示,在程序编译之前,对所有的XML文档(如XML1、XML2、……XMLn)按照XML解析规则进行解析并缓存,为了便于将解析参数编译到编译程序中,可以将解析后的数据按照预先设定的排序规则进行重新排列,得到view.bin文件。在加载GUI绘制程序过程中,通过匹配前述的预先设定的排序规则,从view.bin文件中提取出结构化数据,分别填充到预先设定的数据结构中:string数组、color数组、image数组、form链表。

图4是根据本发明可选实施例的图形用户界面GUI的绘制方法的流程图,如图4所示,显示APP中的GUI,需要依赖GUI系统架构。APP通过string、color、image、form四个数据结构的下标中索引到需要绘制的GUI的相应控件参数,然后将控件参数传递给GUI系统架构,在架构内部实现GUI的绘制,并且通过APP预先设置好的回调将事件信息通知给APP,最终完成GUI的绘制。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种图形用户界面GUI的绘制装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图5是根据本发明实施例的图形用户界面GUI的绘制装置的示意图,如图5所示,该装置包括:获取单元502、编译单元504和绘制单元506。获取单元502,用于在编译用于绘制GUI的编译程序之前,通过对用于绘制GUI的标记语言文件进行解析,获取用于绘制GUI的参数;编译单元504,用于将获取的参数编译到编译程序中;绘制单元 506,用于通过运行编译了参数的编译程序,绘制GUI。

为了实现GUI定义与具体程序设计语言和开发平台的无关性,所有的GUI参数与资源都是通过标记语言描述方法来定义的。因此,在绘制GUI时,需要对用于绘制GUI的标记语言文件进行解析,将其解析为汇编语言或二进制语言。

在本发明实施例中,用于绘制GUI的GUI系统架构主要包括:脚本解析层、图形层和系统封装接口层三个部分。实施时,脚本解析层可以在编译用于绘制GUI的编译程序之前,对用于绘制GUI的标记语言文件进行解析,以获取用于绘制GUI的参数,并将解析得到的参数编译到程序中。这样,在程序执行过程中,可以提取相应的参数来绘制图形界面。

由于现有技术方案是在程序执行过程中对标记语言文件进行解析,以获取用于绘制GUI的参数的,导致程序的执行效率较低。而本发明提供的技术方案则是在程序编译之前对标记语言文件进行解析以获取用于绘制GUI的参数的,这样,在绘制过程中可以直接提取编译在程序中的参数,大幅度提高了程序的执行效率。

通过上述步骤,解决了相关技术中需要在编译过程中解析用于绘制GUI的参数而导致程序执行效率低的问题,进而达到了提高用于绘制GUI的程序的执行效率的效果。

可选地,获取单元包括:解析模块,用于对用于绘制GUI的所有标记语言文件按照界面层次进行分级解析,得到二进制解析结果;缓存模块,用于按照解析顺序缓存二进制解析结果;提取模块,用于从二进制解析结果中提取用于绘制GUI的参数。

一方面,将标记语言描述的参数解析为二进制语言描述的参数,在编译时,可以直接将机器可识别的二进制参数编译到编译程序中;另一方面,按照界面层次对所有标记语言文件进行解析,可以简化解析逻辑,提高解析效率,同时防止由于漏解析或重复解析而导致绘制出正确的GUI。

可选地,装置还包括:排序单元,用于在按照解析顺序缓存二进制解析结果之后,将二进制解析结果按照预先设定的排序规则重新排序,其中,提取模块还用于在将二进制解析结果按照预先设定的排序规则重新排序之后,通过匹配预先设定的排序规则,从重新排序的二进制解析结果中提取用于绘制GUI的结构化数据。

也即,脚本解析层在用于绘制GUI的编译程序之前,对描述GUI的所有标记语言文件按照界面层次进行分级解析,将解析后的数据按照预先设定的排序规则(如特定的数据排列协议)进行重新排列后得到一个二进制文件,并缓存之。在加载用于绘制GUI的程序的过程中,通过匹配前述的预先设定的排序规则,从二进制文件中提取出结构化数据,分别填充到一些预先设定的数据结构中。这样,在程序在执行过程中,如果需要绘制特定的图形界面,则只需要从数据结构中检索相应的GUI所对应的参数即可,从而提高了参数的加载速度以及程序的编译效率。

可选地,绘制单元包括:检索模块,用于在编译程序运行过程中,检索参数;传递模块,用于将参数传递给封装好的图形函数接口;第一调用模块,用于通过图形函数接口从多个预先设定的GUI库中的至少之一中调用与参数相匹配的控件结构;绘制模块,用于使用调用的控件结构绘制GUI。

也即,在编译程序运行过程中,可以检索编译在编译程序中的各个参数,并将检索到的参数传递给在图形层预先封装好的图形函数接口,通过这个图形函数接口可以从多个预先设定的GUI库中的至少之一中调用与参数相匹配的控件结构,进而直接使用调用的控件结构绘制GUI。

其中,在图形层预先封装好的图形函数接口是对组成GUI的各种控件的封装。这些控件可以分为3大类,分别为Control、GDI、Image decoding。Control是构成GUI的基本控件,常用的主要有Button、Label、Combobox、List、Textbox、Timer等;GDI是实现多窗口系统的一项关键技术,即剪切域技术,通过剪切域可以在嵌入式平台上显示复杂的窗口,保证一个窗口的绘制不会影响到其它窗口的绘制;Image decoding是对不同类型图片的解码,支持的图片类型有BMP、GIF、JEPG和PNG。

由于相关技术所提供的技术方案并未封装图形函数接口,导致GUI系统架构只能支持单一类型的GUI库;而本发明设计的GUI系统架构可以在程序执行过程中,从特定的数据结构中检索到界面参数,并传递给封装好的函数接口,以适配多种GUI库,从而完成相应的GUI绘制任务,提高了系统的灵活性,同时结构清晰,占用资源更少,性能更高效,更易于维护。

在本发明实施例中,GUI系统架构中的图形层可以适配现有的GUI库,也可以封装芯片厂家提供的软件接口。简单的绘图操作可以直接调用芯片厂家提供的软件接口,较为复杂的控件绘制操作可以通过封装好的各芯片厂家所提供的软件接口实现。

可选地,绘制单元包括:第二调用模块,用于通过封装好的系统函数接口从多种预先设定的运行环境中调用绘制当前的GUI所需要的运行环境,其中,运行环境包括以下至少之一:操作系统和硬件资源。

系统函数接口是在系统封装接口层对操作系统和硬件平台的封装。GUI系统架构用到的所有系统资源,都是通过调用系统封装接口层的系统函数接口得到的。系统封装接口层的系统函数接口包括操作系统相关接口,如内存管理、进程调度、定时器管理、信号量、文件系统等,以及平台显示、驱动等相关接口,如fill、blit、surface等。另外,系统封装接口层位于操作系统和应用层之间,用来隔离下层使用的不同的操作系统。

实施时,在GUI绘制过程中,调用系统封装接口层的系统函数接口,完成操作系统或平台驱动等相关接口的调用,如内存的申请与释放、信号量的创建与释放、线程的创建与释放等。通过系统封装接口层的系统函数接口为GUI适配特定的操作系统和硬件平台,最终实现GUI的绘制与显示。

本发明通过设计一种轻量级的嵌入式GUI系统架构,可以实现在GUI绘制过程适配多种图形库、多种操作系统和多种硬件平台的目的,以及达到绘制GUI时,更简单、更灵活、结构更清晰、占用资源更小且反应速度更快,更易于维护的效果。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

S20,在编译用于绘制GUI的编译程序之前,通过对用于绘制GUI的标记语言文件进行解析,获取用于绘制GUI的参数;

S22,将获取的参数编译到编译程序中;

S24,通过运行编译了参数的编译程序,绘制GUI。

可选地,存储介质还被设置为存储用于执行上述实施例中各优选实施方式中的其他步骤的程序代码,在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:

S26,在编译用于绘制GUI的编译程序之前,通过对用于绘制GUI的标记语言文件进行解析,获取用于绘制GUI的参数;

S28,将获取的参数编译到编译程序中;

S30,通过运行编译了参数的编译程序,绘制GUI。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例中各优选实施方式中的其他步骤的程序代码,在此不再赘述。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多 个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1