CN107122176A - 一种图形绘制方法及装置 - Google Patents
一种图形绘制方法及装置 Download PDFInfo
- Publication number
- CN107122176A CN107122176A CN201710208461.1A CN201710208461A CN107122176A CN 107122176 A CN107122176 A CN 107122176A CN 201710208461 A CN201710208461 A CN 201710208461A CN 107122176 A CN107122176 A CN 107122176A
- Authority
- CN
- China
- Prior art keywords
- layer
- drawn
- logical
- global variable
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种图形绘制方法及装置,其中,所述方法包括:步骤1,基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;步骤2,基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。本发明提供的一种图形绘制方法及装置,将动画效果或者游戏场景中的图形绘制时所需要的资源分开加载,以分层的方式去实现图形绘制,绘制完成后及时释放内存,内存占用率低、能有效避免因为一次加载所有资源造成的性能损耗。
Description
技术领域
本发明涉及软件开发领域,更具体地,涉及一种图形绘制方法及装置。
背景技术
在软件开发过程中,开发人员经常会使用开发平台所提供的图形绘制接口来处理一些对性能要求较高的界面动画操作。目前使用图形绘制接口进行图形显示时,首先将所有需要显示的图片资源一次加载到内存中,然后等到需要显示该图片时就将内存中对应的资源进行显示。
现有技术存在如下问题:一次将所有的资源加载进内存,特别是遇到复杂的动画效果或游戏场景显示时,会导致加载时间过长,内存占用过多,不仅影响界面动画的初次显示效果,还可能导致应用的响应速度变慢和性能下降,用户体验较差。
发明内容
本发明提供一种图形绘制方法及装置,能够克服或者至少部分解决现有图形绘制技术中存在的一次将所有资源加载进内存,加载时间过长、内存占用过多、显示效果差,导致应用的性能下降和用户体验差的问题。
根据本发明的一个方面,提供一种图形绘制方法,包括:
步骤1,基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;
步骤2,基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
其中,所述步骤1进一步包括:
将图形细化为多个帧图像,获取绘制所述多个帧图像中的每个帧图像所需要的界面元素;
将所有需要相同界面元素的帧图像设定为同一逻辑层,得到多个待绘制的逻辑层。
其中,所述步骤2进一步包括:
定义第一数组,且将所述第一数组中的各个变量分别初始化为所述多个待绘制的逻辑层中的各个逻辑层;
从所述第一数组中顺序读取所述各个逻辑层作为目标层。
其中,所述步骤2进一步包括:
调用所述目标层的加载函数,对绘制所述目标层所需要的资源进行加载;
基于所述资源,调用所述目标层的绘制函数对所述目标层进行绘制;
绘制完成后,调用所述目标层的释放函数,释放所述资源。
其中,所述状态机包括:枚举类、第二数组和层切换函数,其中,
所述枚举类的各个成员分别为所述多个待绘制的逻辑层中的各个逻辑层;
所述第二数组中的各个变量分别被初始化为所述多个待绘制的逻辑层中各个逻辑层的枚举;
所述层切换函数的形参的类型为所述枚举类,且所述层切换函数的内部包括一个用于保存当前逻辑层的全局变量。
其中,所述步骤2进一步包括:
将所述第二数组中的各个变量顺序作为所述层切换函数的实参,调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制。
其中,所述调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制包括:
判断所述全局变量是否为空,若不为空,则调用所述全局变量所对应的逻辑层的释放函数,释放绘制当前逻辑层所需要的资源;
将所述层切换函数的实参传递给所述全局变量;
调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
其中,所述调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制包括:
判断所述全局变量是否为空,若为空,则将所述层切换函数的实参传递给所述全局变量;
调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
其中,调用所述绘制函数包括:
在所述绘制函数的内部,调用开发平台所提供的图形绘制接口中的绘制类方法。
根据本发明的一个方面,提供一种图形绘制装置,包括:
逻辑分层模块,用于基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;
绘制模块,用于基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
本发明提供一种图形绘制方法及装置,将动画效果或者游戏场景中的图形绘制时所需要的资源分开加载,以分层的方式去实现图形绘制,绘制完成后及时释放内存,内存占用率低、能有效避免因为一次加载所有资源造成的性能损耗。
附图说明
图1为本发明一实施例提供的一种图形绘制方法的流程示意图;
图2为本发明另一实施例提供的基于图1中步骤S12的流程示意图;
图3本发明另一实施例提供的调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制的流程示意图;
图4为本发明另一实施例提供的调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制的流程示意图;
图5为本发明又一实施例提供的一种图形绘制装置的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,为本发明一实施例提供的一种图形绘制方法的流程示意图,包括:
S11,基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;
S12,基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
具体地,在软件开发过程中,经常会使用到图形绘制来处理一些对性能要求较高的界面动画操作或者游戏场景的显示,无论是动画或者游戏场景中的图形都可以被细化为多个帧图像,每个帧图像具体由界面元素组成,界面元素包括:图片、按钮、文字、动画和声音等元素。同一个图形的不同帧图像中,必然有几个帧的界面元素是相同的,可以根据帧图像界面元素的相同性,将图形划分为多个待绘制的逻辑层。将图形划分为多个待绘制的逻辑层的目的是为了对图形进行分层绘制,避免一次加载所有绘制该场景所需要的资源所造成占用内存过多和性能损耗,同时能够避免某个场景因为太复杂导致代码逻辑过于复杂从而导致后期维护困难的情况出现。
步骤S12中基于层切换的状态机,所述状态机的状态数等于步骤S11中所得到的多个待绘制的逻辑层的个数,每个状态分别对应一个逻辑层。状态机可归纳为4个要素,即现态、条件、动作和次态,其中,现态是指当前所处的状态。条件又称为事件,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作是指条件满足后执行的动作,动作执行完毕后,可以迁移到新的状态。次态是指条件满足后要迁往的新状态。次态是相对于现态而言的,次态一旦被激活,就转变成新的现态了。通过创建一个状态机,来实现对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。其中,前一个逻辑层的绘制完成为触发状态迁移的条件,对当前逻辑层进行独立的资源加载和绘制为具体的动作,首先对层切换状态机的第一个状态所对应的逻辑层进行绘制,然后触发状态机自动迁移到下一个状态,对所述下一个状态所对应的逻辑层进行绘制,然后触发状态迁移……重复上述过程,直至最后一个状态所对应的逻辑层的绘制完成。
本发明实施例提供一种图形绘制方法,以分层的方式去实现图形绘制,将动画效果或者游戏场景中的界面绘制所需要的资源分开加载,避免了因为所有资源都初次一起加载而引起的性能问题,同一时间只有同一个层需要的资源被加载到内存中,可以更加高效的利用内存,能够避免出现内存占用过多的情况。
本发明另一实施例,在上述实施例的基础上,所述步骤S11进一步包括:
将图形细化为多个帧图像,获取绘制所述多个帧图像中的每个帧图像所需要的界面元素;
将所有需要相同界面元素的帧图像设定为同一逻辑层,得到多个待绘制的逻辑层。
具体地,将图形细化为多个帧图像,获取绘制所述多个帧图像中的每个帧图像所需要的界面元素,然后基于所获取到的界面元素,对图形细化后得到的多个帧图像进行逻辑分层,即将所有需要相同界面元素的帧图像设定为同一逻辑层,将所述多个帧图像中的其余各帧图像分别单独设为一层。比如一个动画有n个帧,其中必然有几帧所需要的界面元素是相同的,将所有需要相同元素的帧统一设定为同一层,所以n个帧的动画最后可能分成m层,其中,m小于等于n,这m个层即为所述多个待绘制的逻辑层。
本发明提供一种图形绘制方法,通过将图形进行逻辑分层后再分别独立绘制,能有效避免因为一次加载所有资源造成的性能损耗,能使内存得到更高效的利用。
如图2所示,为本发明另一实施例提供的基于图1中步骤S12的流程示意图,包括:
S21,定义第一数组,且将所述第一数组中的各个变量分别初始化为所述多个待绘制的逻辑层中各个逻辑层;
S22,从所述第一数组中顺序读取所述各个逻辑层作为目标层。
需要说明的是,上下文中使用的“第一”、“第二”等术语仅仅是为了区别不同的描述对象,而并非有意限制任何时间或者空间上的顺序。
具体地,逻辑层用一个抽象类来实现,这里可以命名为Layer,Layer中有抽象方法onCreate(),onPaint()及onDestory(),步骤S21中所述多个待绘制的逻辑层中各个逻辑层即为所述Layer类的实例化对象,即每个逻辑层都是一个Layer类的对象。当开发人员定好逻辑分层后,需要将定义好的各个逻辑层进行实现,其中加载函数onCreate()用来处理绘制当前逻辑层所需要加载的资源,包括图片、音频和文字等资源,绘制函数onPaint()用于绘制当前逻辑层,onDestory()方法用来释放绘制当前逻辑层所需要的资源。
本发明实施例的层切换状态机通过遍历一个数组来实现,所述数组的各个变量分别被初始化为所述多个待绘制的逻辑层中的各个逻辑层,即具体的Layer类对象。按顺序遍历所述该数组就可以访问所述多个待绘制的逻辑层的对象。按顺序读取数组变量,即按顺序将所述各个逻辑层的对象,将每次读取的逻辑层的对象作为目标层,然后对所述目标层进行独立的资源加载和绘制。数组变量的顺序是根据不同的场景,开发人员通过代码进行添加的,通过遍历数组就可以实现不同逻辑层之间的切换。
本发明实施例提供的一种图形绘制方法,通过遍历数组实现多个层之间的切换,代码清晰后期维护成本低,以分层的方式去实现图形绘制,避免了将一堆代码写一个一个界面,减少了代码的复杂度和bug率。
本发明又一实施例,在上述实施例的基础上,所述步骤S12进一步包括:
调用所述目标层的加载函数,对绘制所述目标层所需要的资源进行加载;
基于所述资源,调用所述目标层的绘制函数对所述目标层进行绘制;
绘制完成后,调用所述目标层的释放函数,释放所述资源。
具体的,确定目标层后要对目标层进行绘制,具体的绘制过程如下:首先,调用所述目标层的加载函数onCreate(),对绘制所述目标层所需要的资源进行加载;然后,基于所述资源,调用所述目标层的绘制函数onPaint(),对所述目标层进行绘制;在目标层绘制完成后,调用所述目标层的释放函数onDestory(),释放加载进内存的所述资源。
本发明实施例提供的一种图形绘制方法,对图形的资源进行分层加载,分散了资源加载的时期,并在每一个逻辑层绘制完成后立即释放资源,可以有效避免一次加载过多资源导致的性能损耗,并有效减少内存占用率。
本发明另一实施例,在上述实施例的基础上,所述状态机包括:枚举类、第二数组和层切换函数,其中,
所述枚举类的各个成员分别为所述多个待绘制的逻辑层中的各个逻辑层;
所述第二数组中的各个变量分别被初始化为所述多个待绘制的逻辑层中各个逻辑层的枚举;
所述层切换函数的形参的类型为所述枚举类,且所述层切换函数的内部包括一个用于保存当前逻辑层的全局变量。
具体地,本发明实施例的状态机通过定义枚举、第二数组和调用层切换函数来实现,枚举和第二数组将所述多个待绘制的逻辑层进行封装,将封装后的逻辑层作为状态转移的条件,通过调用层切换函数来实现绘制操作,从而实现了基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
定义一个枚举类,所述枚举类的成员是所述多个待绘制的逻辑层中各个逻辑层,那么每个逻辑层都是一个枚举,比如有m个待绘制的层,枚举的成员就有m个,状态机就有m种状态,分别对应各个逻辑。用枚举对各个逻辑层进行封装,目的是为了能够清晰地知道当前状态机处于绘制哪个层的状态。
定义第二数组,将所述数组中的各个变量分别初始化为所述多个待绘制的逻辑层中各个逻辑层的枚举,访问数组变量,就可以访问所述各个逻辑层的对象。数组变量的顺序是根据不同的场景,开发人员通过代码进行添加的,通过遍历数组可以实现不同层之间的切换。
定义一个层切换函数,这里可以命名为changeLayer(),changeLayer()函数的形参类型为所定义的枚举类,以需要绘制的逻辑层的枚举作为参数,来实现不同逻辑层之间的切换。在所述层切换函数changeLayer()的内部定义一个全局变量curLayout,用来保存当前逻辑层的对象。
本发明实施例提供的一种图形绘制方法,通过枚举将多个待绘制的层进行封装,通过遍历数组实现多个层之间的切换,代码清晰后期维护成本低,以分层的方式去实现图形绘制,避免了将一堆代码写一个一个界面,减少了代码的复杂度和bug率。
本发明另一实施例,在上述实施例的基础上,所述步骤S12进一步包括:将所述数组中的各个变量顺序作为所述层切换函数的实参,调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制。
具体地,将所述数组中的各个变量顺序作为层切换函数的实参,即顺序将各个逻辑层的枚举作为层切换函数changeLayer()的实参传递给全局变量curLayout,全局变量curLayout此时被分别赋值为所述各个逻辑层的枚举,即通过全局变量curLayout,就可以访问到逻辑层的对象。然后,通过调用层切换函数changeLayer()就可以对全局变量curLayout所对应的逻辑层进行绘制,从而通过实参传递实现全局变量curLayout所对应的层的改变。
另外,在每次层切换函数执行完成后,都调用平台的暂停函数,类似sleep()函数,用于使cpu空闲一段时间,从而控制动画或游戏场景的流畅度。在每次层的绘制完成后调用开发平台所提供的暂停函数,可以使系统cpu空闲,提高动画或游戏场景显示的流畅度,提升了用户体验。
本发明实施例提供的一种图形绘制方法,通过遍历数组实现多个待绘制的逻辑层的逐一绘制,代码清晰后期维护成本低。
如图3所示,为本发明另一实施例提供的调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制的流程示意图,包括:
S31,判断所述全局变量是否为空,若不为空,则调用所述全局变量所对应的逻辑层的释放函数,释放绘制当前逻辑层所需要的资源;
S32,将所述层切换函数的实参传递给所述全局变量;
S33,调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
具体地,当调用所述层切换函数changeLayer()对所述多个待绘制的层进行逐一绘制时,需要先判断全局变量curLayout是否为空,若全局变量curLayout不为空,则说明全局变量curLayout保存了当前层的对象,则会先调用全局变量curLayout所对应的当前逻辑层的onDestory方法来释放当前层的资源,然后将传递进来的实参,即需要要绘制的逻辑层的对象,赋给所述全局变量curLayout,从而将全局变量curLayout设置成需要绘制的层,然后调用curLayout所表示的对象的onCreate()方法和onPaint()方法,这样就实现了上个逻辑层的释放和新的逻辑层的初始化和绘制。这里对每个逻辑层都做自己的初始化和释放的目的是减少由于第一次将所有资源进行加载而造成的资源浪费以及性能损耗。
本发明实施例提供的一种图形绘制方法,分层加载资源,并在绘制完成后释放所加载的资源,能够有效提升性能,减少内存占用率,提示用户使用应用软件的体验。
如图4所示,为本发明另一实施例提供的调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制的流程示意图,包括:
S41,判断所述全局变量是否为空,若为空,则将所述层切换函数的实参传递给所述全局变量;
S42,调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
具体地,当调用所述层切换函数changeLayer()对所述多个待绘制的层进行逐一绘制时,需要先判断全局变量curLayout是否为空,若为空,则说明当前没有层已经被绘制了,需要将所述层切换函数的实参传递给所述全局变量,即将所述全局变量curLayout设置为要绘制的层,然后调用所述全局变量curLayout所表示的层的对象的加载函数onCreate(),加载绘制所述全局变量所对应的层所需要的资源,并基于所述资源,调用所述全局变量curLayout所表示的层的对象的绘制函数onPaint(),对所述全局变量所表示的层进行绘制。完成上述步骤后,全局变量curLayout不再为空,则跳出步骤。
本发明实施例提供的一种图形绘制方法,分离了加载资源的时期,避免了因为所有资源都初次一起加载而引起的性能问题。
本发明另一实施例,在上述实施例的基础上,调用所述绘制函数包括:在所述绘制函数的内部,调用开发平台所提供的图形绘制接口中的绘制类方法。
具体地,无论是android还是ios开发平台所提供的图形绘制接口API中都会有绘制类方法,类似onDraw()的方法,不同平台下可能方法名称不同,但是具有相同功能的方法都是存在的,用于直接绘制图形,一般情况下onDraw方法的作用是将其绘制的数据直接显示在屏幕buffer上从而达到显示的效果,屏幕buffer本质上就是一块屏幕的内存地址,在具有独显的设备上即为显存。当调用状态机对待绘制的层进行绘制时,直接调用全局变量curLayout的onPaint()方法,在所述onPaint()方法的内部,会自动调用对应平台所提供的图形绘制接口中的绘制类方法onDraw(),进行新层的绘制。
本发明实施例提供的一种图形绘制方法,在对每个层进行绘制时调用开发平台所提供的图形绘制接口,实现了高性能的图形绘制。
如图5所示,为本发明另一实施例提供的一种图形绘制装置的结构示意图,包括:逻辑分层模块51和绘制模块52,其中,
逻辑分层模块51,用于根据帧图像界面元素的相同性,将图形划分为多个待绘制的逻辑层;
绘制模块52,用于基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
具体地,在软件开发过程中,经常会使用到图形绘制来处理一些对性能要求较高的界面动画操作或者游戏场景的显示,无论是动画或者游戏场景中的图形都可以被细化为多个帧图像,每个帧图像具体由界面元素组成,界面元素包括:图片、按钮、文字、动画和声音等元素。同一个图形的不同帧图像中,必然有几个帧的界面元素是相同的,逻辑分层模块51可以根据帧图像界面元素的相同性,将图形划分为多个待绘制的逻辑层。将图形划分为多个待绘制的逻辑层的目的是为了对图形进行分层绘制,避免一次加载所有绘制该场景所需要的资源所造成占用内存过多和性能损耗,同时能够避免某个场景因为太复杂导致代码逻辑过于复杂从而导致后期维护困难的情况出现。
具体地,所述状态机的状态数等于逻辑分层模块51所得到的多个待绘制的逻辑层的个数,每个状态分别对应一个逻辑层。状态机可归纳为4个要素,即现态、条件、动作和次态,其中,现态是指当前所处的状态。条件又称为事件,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。动作是指条件满足后执行的动作,动作执行完毕后,可以迁移到新的状态。次态是指条件满足后要迁往的新状态。次态是相对于现态而言的,次态一旦被激活,就转变成新的现态了。绘制模块52通过创建一个状态机,来实现对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。其中,前一个逻辑层的绘制完成为触发状态迁移的条件,对当前逻辑层进行独立的资源加载和绘制为具体的动作,首先对层切换状态机的第一个状态所对应的逻辑层进行绘制,然后触发状态机自动迁移到下一个状态,对所述下一个状态所对应的逻辑层进行绘制,然后触发状态迁移……重复上述过程,直至最后一个状态所对应的逻辑层的绘制完成。
本发明实施例提供一种图形绘制装置,以分层的方式去实现图形绘制,将动画效果或者游戏场景中的界面绘制所需要的资源分开加载,避免了因为所有资源都初次一起加载而引起的性能问题,同一时间只有同一个层需要的资源被加载到内存中,可以更加高效的利用内存,能够避免出现内存占用过多的情况。
本发明上述各实施例所提供的图形绘制方法及装置,对复杂的动画或游戏场景来说,以分层的方式去实现图形绘制,避免了将一堆代码写一个一个界面,减少了代码的复杂度和bug率,将动画效果或者游戏场景中的界面绘制所需要的资源分开加载,避免了因为所有资源都初次一起加载而引起的性能问题,同一时间只有同一个层需要的资源被加载到内存中,可以更加高效的利用内存,能够避免出现内存占用过多的情况。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种图形绘制方法,其特征在于,包括:
步骤1,基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;
步骤2,基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
2.根据权利要求1所述的方法,其特征在于,所述步骤1进一步包括:
将图形细化为多个帧图像,获取绘制所述多个帧图像中的每个帧图像所需要的界面元素;
将所有需要相同界面元素的帧图像设定为同一逻辑层,得到多个待绘制的逻辑层。
3.根据权利要求1所述的方法,其特征在于,所述步骤2进一步包括:
定义第一数组,且将所述第一数组中的各个变量分别初始化为所述多个待绘制的逻辑层中的各个逻辑层;
从所述第一数组中顺序读取所述各个逻辑层作为目标层。
4.根据权利要求3所述的方法,其特征在于,所述步骤2进一步包括:
调用所述目标层的加载函数,对绘制所述目标层所需要的资源进行加载;
基于所述资源,调用所述目标层的绘制函数对所述目标层进行绘制;
绘制完成后,调用所述目标层的释放函数,释放所述资源。
5.根据权利要求1所述的方法,其特征在于,所述状态机包括:枚举类、第二数组和层切换函数,其中,
所述枚举类的各个成员分别为所述多个待绘制的逻辑层中的各个逻辑层;
所述第二数组中的各个变量分别被初始化为所述多个待绘制的逻辑层中各个逻辑层的枚举;
所述层切换函数的形参的类型为所述枚举类,且所述层切换函数的内部包括一个用于保存当前逻辑层的全局变量。
6.根据权利要求5所述的方法,其特征在于,所述步骤2进一步包括:
将所述第二数组中的各个变量顺序作为所述层切换函数的实参,调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制。
7.根据权利要求6所述的方法,其特征在于,所述调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制包括:
判断所述全局变量是否为空,若不为空,则调用所述全局变量所对应的逻辑层的释放函数,释放绘制当前逻辑层所需要的资源;
将所述层切换函数的实参传递给所述全局变量;
调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
8.根据权利要求6所述的方法,其特征在于,所述调用所述层切换函数对所述多个待绘制的逻辑层进行逐一绘制包括:
判断所述全局变量是否为空,若为空,则将所述层切换函数的实参传递给所述全局变量;
调用所述全局变量所对应的逻辑层的加载函数,加载绘制所述全局变量所对应的逻辑层所需要的资源,并基于所述资源,调用所述全局变量所对应的逻辑层的绘制函数,对所述全局变量所对应的逻辑层进行绘制。
9.根据权利要求4、7或8所述的方法,其特征在于,调用所述绘制函数包括:
在所述绘制函数的内部,调用开发平台所提供的图形绘制接口中的绘制类方法。
10.一种图形绘制装置,其特征在于,包括:
逻辑分层模块,用于基于相同的帧图像界面元素,将图形划分为多个待绘制的逻辑层;
绘制模块,用于基于层切换的状态机,对所述多个待绘制的逻辑层分别进行独立的资源加载和绘制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710208461.1A CN107122176B (zh) | 2017-03-31 | 2017-03-31 | 一种图形绘制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710208461.1A CN107122176B (zh) | 2017-03-31 | 2017-03-31 | 一种图形绘制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122176A true CN107122176A (zh) | 2017-09-01 |
CN107122176B CN107122176B (zh) | 2020-08-04 |
Family
ID=59725288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710208461.1A Active CN107122176B (zh) | 2017-03-31 | 2017-03-31 | 一种图形绘制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122176B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549581A (zh) * | 2018-04-02 | 2018-09-18 | 郑州云海信息技术有限公司 | 一种分层式图形实时绘制渲染方法与系统 |
CN109669752A (zh) * | 2018-12-19 | 2019-04-23 | 北京达佳互联信息技术有限公司 | 一种界面绘制方法、装置及移动终端 |
CN110493456A (zh) * | 2019-07-29 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 一种动画播放方法、装置、终端设备及服务器 |
CN111880792A (zh) * | 2020-07-15 | 2020-11-03 | 深圳市欢太科技有限公司 | 用户界面的实现方法、移动终端及计算机可读存储介质 |
CN112925638A (zh) * | 2021-02-04 | 2021-06-08 | 深圳市禅游科技股份有限公司 | 资源加载方法、装置、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447091A (zh) * | 2006-12-04 | 2009-06-03 | Arm挪威股份有限公司 | 用于处理图形的设备及其方法 |
CN103187002A (zh) * | 2011-12-29 | 2013-07-03 | 北京移动坚石信息技术有限公司 | 生成电子地图的方法 |
JP2014021362A (ja) * | 2012-07-20 | 2014-02-03 | Toppan Printing Co Ltd | 液晶表示装置 |
CN103679772A (zh) * | 2013-12-09 | 2014-03-26 | 中国南方电网有限责任公司超高压输电公司检修试验中心 | 一种跨电网安全区协同绘图方法 |
CN106547571A (zh) * | 2016-11-30 | 2017-03-29 | 北京酷我科技有限公司 | 一种可自定义的动图显示方法 |
-
2017
- 2017-03-31 CN CN201710208461.1A patent/CN107122176B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447091A (zh) * | 2006-12-04 | 2009-06-03 | Arm挪威股份有限公司 | 用于处理图形的设备及其方法 |
CN103187002A (zh) * | 2011-12-29 | 2013-07-03 | 北京移动坚石信息技术有限公司 | 生成电子地图的方法 |
JP2014021362A (ja) * | 2012-07-20 | 2014-02-03 | Toppan Printing Co Ltd | 液晶表示装置 |
CN103679772A (zh) * | 2013-12-09 | 2014-03-26 | 中国南方电网有限责任公司超高压输电公司检修试验中心 | 一种跨电网安全区协同绘图方法 |
CN106547571A (zh) * | 2016-11-30 | 2017-03-29 | 北京酷我科技有限公司 | 一种可自定义的动图显示方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549581A (zh) * | 2018-04-02 | 2018-09-18 | 郑州云海信息技术有限公司 | 一种分层式图形实时绘制渲染方法与系统 |
CN108549581B (zh) * | 2018-04-02 | 2019-10-29 | 郑州云海信息技术有限公司 | 一种分层式图形实时绘制渲染方法与系统 |
CN109669752A (zh) * | 2018-12-19 | 2019-04-23 | 北京达佳互联信息技术有限公司 | 一种界面绘制方法、装置及移动终端 |
CN110493456A (zh) * | 2019-07-29 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 一种动画播放方法、装置、终端设备及服务器 |
CN111880792A (zh) * | 2020-07-15 | 2020-11-03 | 深圳市欢太科技有限公司 | 用户界面的实现方法、移动终端及计算机可读存储介质 |
CN111880792B (zh) * | 2020-07-15 | 2024-05-14 | 深圳市欢太科技有限公司 | 用户界面的实现方法、移动终端及计算机可读存储介质 |
CN112925638A (zh) * | 2021-02-04 | 2021-06-08 | 深圳市禅游科技股份有限公司 | 资源加载方法、装置、设备及计算机可读存储介质 |
CN112925638B (zh) * | 2021-02-04 | 2023-10-10 | 深圳市禅游科技股份有限公司 | 资源加载方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107122176B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122176A (zh) | 一种图形绘制方法及装置 | |
CN104714824B (zh) | 一种应用程序启动方法 | |
CN105427366B (zh) | 一种图像渲染方法和图像渲染系统 | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
CN105224163B (zh) | 界面显示方法和装置 | |
CN112529995B (zh) | 图像渲染计算方法、装置、存储介质以及终端 | |
CN106796530A (zh) | 一种虚拟化方法、装置、及电子设备、计算机程序产品 | |
CN110471701B (zh) | 图像渲染的方法、装置、存储介质及电子设备 | |
CN104899150A (zh) | 基于面向对象的自动化测试方法及系统、和自动化平台 | |
CN109101233A (zh) | 适配多种屏幕分辨率的方法、存储设备及安卓设备 | |
CN109117203A (zh) | 一种Android APP启动速度优化方法及系统 | |
CN115220921B (zh) | 资源调度方法及相关装置、图形处理器、摄像器件和介质 | |
CN106325976A (zh) | 一种渲染任务调度处理方法及服务器 | |
CN107450928A (zh) | 一种基于缓存技术的混合开发方法 | |
CN109725977A (zh) | 一种基于Android系统的多应用显示方法及终端设备 | |
CN108196929B (zh) | 一种智能加载系统、方法、存储介质及设备 | |
CN107729049A (zh) | 指令转换方法、设备及计算机可读存储介质 | |
CN110102048A (zh) | 一种虚拟服装渲染方法及装置 | |
CN105975168A (zh) | 一种osd菜单淡入/淡出方法及装置 | |
CN108364335A (zh) | 一种动画绘制方法及装置 | |
CN102723093B (zh) | 一种图像文件的缓存方法 | |
CN109978979A (zh) | 提高实时渲染交互流畅性的方法、装置及电子设备 | |
CN105957012A (zh) | 一种图片拼接方法及移动终端 | |
US8203567B2 (en) | Graphics processing method and apparatus implementing window system | |
CN105678828A (zh) | 一种创建过渡动画的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |