CN100504771C - 一种生成应用程序界面的方法及系统 - Google Patents
一种生成应用程序界面的方法及系统 Download PDFInfo
- Publication number
- CN100504771C CN100504771C CNB200710074758XA CN200710074758A CN100504771C CN 100504771 C CN100504771 C CN 100504771C CN B200710074758X A CNB200710074758X A CN B200710074758XA CN 200710074758 A CN200710074758 A CN 200710074758A CN 100504771 C CN100504771 C CN 100504771C
- Authority
- CN
- China
- Prior art keywords
- interface
- interface assembly
- pointer
- application program
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明适用于计算机应用领域,提供了一种生成应用程序界面的方法及系统,所述方法包括以下步骤:使用界面元素生成界面组件;在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在所述代理函数的闭包中;创建所述界面组件的实例,并在所述代理函数的闭包中保存所述界面组件的实例的指针;调取所述界面组件来生成应用程序界面。在本发明的实施例中,利用界面元素生成各种界面组件,并保存界面组件,需要生成界面时可以直接调取所需的界面组件,从而避免了在用界面元素直接生成界面的过程中存在的重复工作,提高了生成界面的效率。
Description
技术领域
本发明属于计算机应用领域,尤其涉及一种生成应用程序界面的方法及系统。
背景技术
随着计算机应用程序的广泛使用,用户对计算机应用程序界面的美观、易用性提出了越来越高的要求,并且希望能在很短的时间内看到最新、最酷的界面。这就要求界面开发人员能够快速地开发出美观、易用的应用程序界面。目前,开发界面的方法是使用界面元素直接生成界面。但是,在生成不同界面的过程中,有可能含有相同的操作,尤其是在生成若干个相似界面的过程中,生成完第一个界面后,再生成其余界面时,又需要重复与生成第一个界面相同的操作,从而带来了重复工作,使得生成界面的效率较低。
发明内容
本发明实施例的目的在于提供一种生成应用程序界面的方法,旨在解决现有技术由于在生成不同界面的过程中,有可能含有相同的操作,从而在生成多个界面时需要做重复工作,从而使生成界面的效率较低的问题。
本发明实施例是这样实现的,一种生成应用程序界面的方法,所述方法包括以下步骤:
使用界面元素生成界面组件;
在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在所述代理函数的闭包中;
创建所述界面组件的实例,并在所述代理函数的闭包中保存所述界面组件的实例的指针;
调取所述界面组件来生成应用程序界面。
本发明实施例的另一目的在于提供一种生成应用程序界面的系统,所述系统包括
界面组件生成模块,用于使用界面元素生成界面组件;
界面组件保存模块,用于保存所述界面组件;以及
界面生成模块,用于调取所述界面组件来生成应用程序界面;
所述界面组件保存模块包括:
函数指针保存模块,用于在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在所述代理函数的闭包中;以及
界面组件的实例的指针保存模块,用于创建所述界面组件的实例,并在所述代理函数的闭包中保存所述界面组件的实例的指针。
在本发明的实施例中,利用界面元素生成各种界面组件,并保存界面组件,需要生成界面时可以直接调取所需的界面组件,从而避免了在用界面元素直接生成界面的过程中存在的重复工作,提高了生成界面的效率。
附图说明
图1是本发明实施例提供的生成应用程序界面的实现流程图;
图2是本发明实施例提供的生成应用程序界面的系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的实施例中,由界面元素生成各种界面组件,并保存界面组件,生成界面时直接调取所需的界面组件。
图1示出了本发明实施例提供的生成应用程序界面的流程,详述如下:
在步骤101中,使用界面元素生成界面组件。界面组件由各种界面元素生成。界面元素包括颜色块(ColorBox)、文字(FontString)、图片(Texture)这三种可视界面元素,以及选择器(SelectFrame)、群组器(GroupFrame)这两种逻辑界面元素。
在ColorBox的作图函数中,根据开发人员设置的ColorBox的属性来分支和组合不同的作图方法,可以实现向方形(包括圆角方形)区域填充颜色,填充色可以是单色或渐变色。如果填充色是渐变色,该渐变色可以是垂直渐变色或水平渐变色,同样,渐变色可以是2色渐变或3色渐变。当渐变色是3色渐变时,可以设置3种颜色渐变的位置。ColorBox还可以根据开发人员设置的属性进行绘制边框,同时可设置边框的宽度;绘制圆角并可调节圆角的尺寸;绘制中空的矩形或者圆角矩形。
根据开发人员设置的FontString的各种属性,可绘制文字,并且能够设置文字的颜色、字体以及绘制方式,其中包括是否末尾不足显示时打点、单行/多行显示。
根据开发人员设置的Texture的属性可绘制图片和产生不规则形状的窗口。Texture隐藏了各种图片格式解析和显示时的不同,只要指定了文件名即可显示,不必去关心是什么格式的图片。Texture还可以根据开发人员设置的属性设置透明色,可以设置剪裁用于生成不规则形状的窗口区域,可以设置横向纵向拉伸方式,可以设置是否灰度显示。
而逻辑界面元素SelectFrame则没有实际可视效果,SelectFrame只是一个可以放置多个任意的界面元素的特殊容器,并且在任意的时刻只有一个界面元素被显示,其余的被隐藏。根据开发人员设置的SelectFrame的select属性可以指定SelectFrame中需要被显示的界面元素。
逻辑界面元素GroupFrame也是一个可以放置多个任意的界面元素的特殊容器。GroupFrame用来将其内部容纳的多个Frame以平铺的方式全部显示出来,其中,根据开发人员设置的GroupFrame属性信息,使平铺的方式可以是水平单行、垂直单列、水平多行。
这5种界面元素之间也可以互相利用,每一种界面元素的内部可以放置任意多个这5种元素作为其子元素。根据开发人员设置的这5种界面元素的属性和几种元素的组合属性就可以生成各种界面组件。此5种界面元素为最基本的界面元素,当然还可以增加使用其它的界面元素。
在步骤S102中,保存界面组件。生成界面组件后,需要将界面组件的函数进行注册。在注册时,在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在这个代理函数的闭包中。在使用界面组件之前需要创建界面组件的实例,在创建完成后,在代理函数的闭包中保存界面组件的实例的指针。
在步骤S103中,调取界面组件来生成应用程序界面。由于脚本本身的功能是有限的,在脚本中利用界面组件生成界面时,为了能够在脚本中方便地操作界面,需要实现在脚本中调用一些程序中的功能,所以需要调用界面组件的函数。
由于界面组件是一个类,根据C++的调用规则,在脚本中要调用界面组件的函数需要有界面组件的实例的指针和界面组件的函数指针。此时,由代理函数指针查询界面组件的实例的指针,并取出界面组件的函数指针。再由代理函数指针将函数参数依次逆序压栈,当所有的参数都已经压栈完毕后,将界面组件实例的指针压栈,并调用界面组件的函数来生成应用程序界面。
用上述方法制作一个三态的按钮的具体脚本语言描述如下:
<SelectFrame select=”Normal”>
<Texture name=”Normal”file=”Normal.bmp”/>
<Texture name=”Highlight”file=”Highlight.bmp”/>
<Texture name=”Pushed”file=”Pushed.bmp”/>//定义SelectFrame中所包含的三个Texture
<Scripts>//利用脚本语言调用ChangeSelect函数
<OnMouseEnter>
self:ChangeSelect(“Highlight”);
</OnMouseEnter>//当鼠标移动进入按键时,Texture中的Highlight被显示
<OnMouseLeave>
self:ChangeSelect(“Normal”);
</OnMouseLeave>//当鼠标离开按键时,Texture中的Normal被显示
<OnLButtonDown>
self:ChangeSelect(“Pushed”);
</OnLButtonDown>//当鼠标按下按键的时候,Texture中的Pushed被显示
<OnLButtonUp>
self:ChangeSelect(“Highlight”);
</OnLButtonUp>//当鼠标停止按下按键时,Texture中的Highlight被显示
</Scripts>
</SelectFrame>
由3个界面元素Texture组建了一个界面组件SelectFrame,再用脚本语言来调用该SelectFrame。当鼠标离开按键时,Texture中的Normal被显示;当鼠标移动进入按键时,Texture中的Highlight被显示;当鼠标按下按键的时候,Texture中的Pushed被显示,鼠标停止按下按键时,鼠标实际还停留在按键上,Texture中的Highlight被显示。界面组件SelectFrame生成后,其它需要实现类似功能的界面也可以调用SelectFrame。
图2示出了本发明实施例提供的生成应用程序界面的系统的结构,该系统包括界面组件生成模块21、界面组件保存模块22及界面生成模块23。界面组件保存模块22还包括函数指针保存模块221和界面组件的实例的指针保存模块222。界面生成模块23还包括指针调取模块231、函数参数压栈模块232、指针压栈模块233及函数调用模块234。先由界面组件生成模块21使用界面元素生成界面组件。然后,函数指针保存模块221在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在代理函数中,界面组件的实例的指针保存模块222则创建界面组件的实例,并在代理函数指针中保存界面组件的实例的指针。最后,指针调取模块231查询界面组件的实例的指针,并取出界面组件的函数指针,函数参数压栈模块232将界面组件的函数参数依次逆序压栈,指针压栈模块233将界面组件的实例的指针压栈,函数调用模块234调用界面组件的函数来生成应用程序界面。
在本发明的实施例中,利用界面元素先生成各种界面组件,并保存界面组件,需要生成界面时就可以直接调取所需的界面组件,从而避免了在用界面元素直接生成界面的过程中存在的重复工作,提高了生成界面的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1、一种生成应用程序界面的方法,其特征在于,所述方法包括以下步骤:
使用界面元素生成界面组件;
在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在所述代理函数的闭包中;
创建所述界面组件的实例,并在所述代理函数的闭包中保存所述界面组件的实例的指针;
调取所述界面组件来生成应用程序界面。
2、如权利要求1所述的生成应用程序界面的方法,其特征在于,所述界面元素包括可视界面元素和逻辑界面元素;
所述可视元素包括颜色块、文字及图片;
所述逻辑界面元素包括选择器及群组器。
3、如权利要求1所述的生成应用程序界面的方法,其特征在于,所述调取所述界面组件来生成应用程序界面的步骤具体为:
查询界面组件的实例的指针,并取出界面组件的函数指针;
将界面组件的函数参数依次逆序压栈;
将所述界面组件的实例的指针压栈;
调用界面组件的函数来生成应用程序界面。
4、一种生成应用程序界面的系统,其特征在于,所述系统包括:
界面组件生成模块,用于使用界面元素生成界面组件;
界面组件保存模块,用于保存所述界面组件;以及
界面生成模块,用于调取所述界面组件来生成应用程序界面;
所述界面组件保存模块包括:
函数指针保存模块,用于在脚本的表中保存一个代理函数指针,并将界面组件的函数指针保存在所述代理函数的闭包中;以及
界面组件的实例的指针保存模块,用于创建所述界面组件的实例,并在所述代理函数的闭包中保存所述界面组件的实例的指针。
5、如权利要求4所述的生成应用程序界面的系统,其特征在于,所述界面元素包括可视界面元素和逻辑界面元素;
所述可视元素包括颜色块、文字及图片;
所述逻辑界面元素包括选择器及群组器。
6、如权利要求4所述的生成应用程序界面的系统,其特征在于,所述界面生成模块包括:
指针调取模块,用于查询界面组件的实例的指针,并取出界面组件的函数指针;
函数参数压栈模块,用于将界面组件的函数参数依次逆序压栈;
指针压栈模块,用于将所述界面组件的实例的指针压栈;以及
函数调用模块,用于调用界面组件的函数来生成应用程序界面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710074758XA CN100504771C (zh) | 2007-06-08 | 2007-06-08 | 一种生成应用程序界面的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710074758XA CN100504771C (zh) | 2007-06-08 | 2007-06-08 | 一种生成应用程序界面的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101192149A CN101192149A (zh) | 2008-06-04 |
CN100504771C true CN100504771C (zh) | 2009-06-24 |
Family
ID=39487164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200710074758XA Active CN100504771C (zh) | 2007-06-08 | 2007-06-08 | 一种生成应用程序界面的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100504771C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8997040B2 (en) * | 2010-03-24 | 2015-03-31 | Microsoft Technology Licensing, Llc | Variable closure |
CN101944027A (zh) * | 2010-09-26 | 2011-01-12 | 北京神州泰岳软件股份有限公司 | 一种用户界面生成方法 |
CN103092583B (zh) * | 2011-11-01 | 2017-10-10 | 腾讯科技(深圳)有限公司 | 一种动态生成设置项列表视图的方法及装置 |
CN103186685B (zh) * | 2011-12-30 | 2016-04-13 | 深圳光启高等理工研究院 | 基于cst仿真软件的超材料单元结构的构造方法及装置 |
CN104462426B (zh) * | 2014-12-12 | 2018-09-18 | 北京国双科技有限公司 | 查询互联网信息服务的站点信息的方法及装置 |
CN110298153B (zh) * | 2018-03-21 | 2022-12-27 | 阿里巴巴集团控股有限公司 | 指纹识别方法、移动设备、指纹识别系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999174A (en) * | 1997-07-02 | 1999-12-07 | At&T Corporation | Reusable sparing cell software component for a graphical user interface |
US20020118225A1 (en) * | 2001-02-27 | 2002-08-29 | Microsoft Corporation | Expert system for generating user interfaces |
CN1508704A (zh) * | 2002-12-18 | 2004-06-30 | 带有简化的视图的用户界面组件表示 | |
CN1641586A (zh) * | 2004-01-02 | 2005-07-20 | 华为技术有限公司 | 一种实现应用程序界面集成和业务集成的方法 |
-
2007
- 2007-06-08 CN CNB200710074758XA patent/CN100504771C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999174A (en) * | 1997-07-02 | 1999-12-07 | At&T Corporation | Reusable sparing cell software component for a graphical user interface |
US20020118225A1 (en) * | 2001-02-27 | 2002-08-29 | Microsoft Corporation | Expert system for generating user interfaces |
CN1508704A (zh) * | 2002-12-18 | 2004-06-30 | 带有简化的视图的用户界面组件表示 | |
CN1641586A (zh) * | 2004-01-02 | 2005-07-20 | 华为技术有限公司 | 一种实现应用程序界面集成和业务集成的方法 |
Non-Patent Citations (2)
Title |
---|
用Flash MX制作升旗运动. 羌跃明.广西商业高等专科学校学报,第22卷第1期. 2005 |
用Flash MX制作升旗运动. 羌跃明.广西商业高等专科学校学报,第22卷第1期. 2005 * |
Also Published As
Publication number | Publication date |
---|---|
CN101192149A (zh) | 2008-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110007917B (zh) | 一种基于浏览器的可视化页面生成和浏览方法 | |
CN100504771C (zh) | 一种生成应用程序界面的方法及系统 | |
CN105786526B (zh) | 一种基于Web的高效流程图绘制系统及方法 | |
CN104484216B (zh) | 服务接口文档和在线测试工具生成方法、装置 | |
US8887132B1 (en) | Application runtime environment and framework | |
US8941663B2 (en) | Method and device for rendering user interface font | |
CN106843835A (zh) | 一种元数据定制的应用系统软件构建系统、系统构建方法 | |
RU2003114531A (ru) | Язык разметки и объектная модель для векторной графики | |
CN105653650B (zh) | 一种基于d3的研讨系统思维导图及其开发方法 | |
CN104503755A (zh) | 基于html5高清位图的动态信息融合展现方法 | |
CN103530340A (zh) | 网络专题地图制图方法及制图系统 | |
CN104657384A (zh) | 一种基于二维关系的动态配置报表数据处理方法 | |
CN103116503B (zh) | 一种多窗口的实现方法及装置 | |
CN104850388A (zh) | 网页绘制方法及装置 | |
CN110110152A (zh) | 思维导图的处理方法、装置、计算机设备和存储介质 | |
CN109710301A (zh) | 一种自动比较接口文档差异的方法及终端 | |
CN107818588A (zh) | Android系统基于JNI多线程调用Qt绘图的装置和方法 | |
CN109949391A (zh) | 图文绘制方法、装置、电子设备和存储介质 | |
CN105468573A (zh) | 可配置式图表应用系统 | |
CN104020849B (zh) | 基于Windows CE的多程序同时显示方法及系统 | |
CN103593188B (zh) | 一种用于仪器所见即所得菜单的管理系统及管理方法 | |
CN113918669A (zh) | 一种自然资源国土空间规划一张图系统的实现装置及方法 | |
CN109241510A (zh) | 一种基于微信小程序的自动图表生成系统及其实现方法 | |
CN111813410A (zh) | 浏览器数据可视化开发用于多页面联合展示的方法和装置 | |
CN111949722A (zh) | 一种基于Revit的BIM模型轻量化方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |