图文绘制方法、装置、电子设备和存储介质与流程

文档序号:18034593发布日期:2019-06-28 23:07阅读:171来源:国知局
图文绘制方法、装置、电子设备和存储介质与流程

本发明实施例涉及计算机技术,尤其涉及一种图文绘制方法、装置、电子设备和存储介质。



背景技术:

在移动应用的开发过程中,诸如聊天、评论、弹幕和状态发布等场景均会涉及图片与文字混合排列并展示,即图文混排或图文绘制。将图文绘制中图片与文字混合排列的文本类称为富文本。

在图文绘制过程中,由于文字和图片的数量和大小均不确定,使得图文绘制的实现逻辑复杂,且系统功耗较高,尤其是在混排的图片与文字的数量庞大时系统功耗更高。

现有技术中实现图文绘制的方法有:第一,针对每种应用场景中的图文绘制分别编写代码进行设计;第二,借助诸如yytext等第三方框架进行富文本显示的代码实现。但是,第一种实现方案中各种场景对应的图文绘制代码大量重复,造成开发效率低、代码冗余且因占用大量的内存空间而无法降低系统功耗的问题。第二种实现方案中第三方框架功能冗余,造成使用繁琐,且同样无法降低系统功耗的问题。



技术实现要素:

本发明实施例提供一种图文绘制方法、装置、电子设备和存储介质,以实现简便且高效地进行图文绘制,优化系统性能。

第一方面,本发明实施例提供了一种图文绘制方法,包括:

分别以待绘制内容和所述待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各所述待绘制内容之间的内容关联关系,以及每个所述待绘制内容与相应待绘制内容对应的所述绘制属性之间的属性关联关系;其中,所述待绘制内容为文本或图片,且所述待绘制内容的数量为至少两个;

以回调参数为输入参数,以链式调用方式调用所述目标字符串对象的图文绘制属性,以按照各所述绘制属性异步绘制各所述待绘制内容获得图文绘制结果;

其中,所述初始字符串对象为基于系统字符串类而预先创建的字符串分类的实例化对象,所述内容关联属性、所述属性关联属性和所述图文绘制属性均为代码块类型。

第二方面,本发明实施例还提供了一种图文绘制装置,该装置包括:

关联关系建立模块,用于分别以待绘制内容和所述待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各所述待绘制内容之间的内容关联关系,以及每个所述待绘制内容与相应待绘制内容对应的所述绘制属性之间的属性关联关系;其中,所述待绘制内容为文本或图片,且所述待绘制内容的数量为至少两个;

图文绘制模块,用于以回调参数为输入参数,以链式调用方式调用所述目标字符串对象的图文绘制属性,以按照各所述绘制属性异步绘制各所述待绘制内容获得图文绘制结果;

其中,所述初始字符串对象为基于系统字符串类而预先创建的字符串分类的实例化对象,所述内容关联属性、所述属性关联属性和所述图文绘制属性均为代码块类型。

第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的图文绘制方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的图文绘制方法。

本发明实施例通过链式调用基于系统字符串类分类而生成的初始字符串对象的内容关联属性和属性关联属性,将多个待绘制内容和每个待绘制内容对应的绘制属性关联起来,生成目标字符串对象,建立了各待绘制内容之间的内容关联关系以及每个待绘制内容与相应绘制属性之间的属性关联关系,实现通过一行简单的代码便可快速组装富文本,降低了系统内存消耗,提高了图文数据的管理便捷性,也提高了开发效率。通过以回调参数为输入参数,链式调用目标字符串对象的图文绘制属性的一行简单代码,实现了在子线程中按照各绘制属性异步绘制各待绘制内容获得图文绘制结果,并将图文绘制结果以回调方式传递至主线程,达到了高效且便捷地绘制图文,进一步降低系统内存消耗,及降低系统主线程的性能消耗,从而优化系统性能的技术效果。

附图说明

图1是本发明实施例一中的一种图文绘制方法的流程图;

图2是本发明实施例中的一种图文绘制方法的实现原理示意图;

图3是本发明实施例二中的一种图文绘制方法中图文绘制属性的实现方法的流程图;

图4是本发明实施例三中的一种图文绘制方法中图文绘制函数的实现方法的流程图;

图5是本发明实施例四中的一种图文绘制装置的结构示意图;

图6是本发明实施例五中的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

本实施例提供的图文绘制方法可适用于需要图文混排的情形。该方法可以由图文混排装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在电子设备中,例如典型的是用户终端设备,例如手机、平板电脑或台式电脑等。参见图1,本实施例的方法包括:

s110、分别以待绘制内容和待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各待绘制内容之间的内容关联关系,以及每个待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系。

其中,待绘制内容是指需要绘制及显示在电子设备界面上的一个绘制单元的内容。示例性地,待绘制内容为文本或图片,且待绘制内容的数量为至少两个。上述绘制单元的划分可以按照绘制属性和内容类型来划分。例如,绘制属性不同的文本需要划分为不同的待绘制内容,文本类型和图片类型也需划分为不同的待绘制内容。绘制属性是指绘制过程中待绘制内容的绘制样式,例如文本的字体、字号、颜色、阴影、偏移或背景等,以及图片的大小、颜色、阴影、偏移或背景等。每个待绘制内容均有其对应的绘制属性。待绘制内容和绘制属性的获取方式可以是用户输入、服务器拉取和系统内置等方式中的至少一种。

初始字符串对象为基于系统字符串类nsstring而预先创建的字符串分类nsstring+richtext的实例化对象,其内未填充待绘制内容相关的数据。在创建分类时,为分类richtext增添了相关属性,而为了增添的属性能够实现一定的函数操作,将增添的属性均设置为代码块类型block类型。例如为分类richtext增添能够关联各个文本的内容关联属性append、能够关联文本和其绘制属性的属性关联属性(如圆角半径属性cornerradius),以及能够为绘制图文提供接口的图文绘制属性draw等。即内容关联属性和属性关联属性均为代码块类型。

具体地,相关技术中无论是针对每种场景独立编写图文绘制代码,还是采用第三方图文绘制框架,均会造成图文绘制代码量多而占用较多系统内存的情况。所以,本发明实施例中采用了将富文本组装的代码和图文混排绘制的代码均封装为相关函数(或block类型的属性),并将函数调用作为访问接口的形式。而为了增强代码可读性,进一步采用类似链式语法的函数封装方式来构造各个相关函数。这样,便可以通过链式调用的方式顺次调用各个相关函数,以一行代码完成图文绘制的各个操作,不仅不需要开发人员再编写图文绘制的底层实现代码,极大地提高开发效率,更是减少存储代码而消耗的系统内存量,降低系统内存消耗。

具体实施时,以每个待绘制内容和每个待绘制内容的绘制属性为输入参数,通过初始字符串对象richtext,顺次调用内容关联属性append和属性关联属性。需要说明的是,以待绘制内容为(文本1+文本2+图片)为例,内容关联属性和属性关联属性的链式调用顺序是:先以文本1为输入参数调用一次内容关联属性,再分别以文本1对应的n1个绘制属性为输入参数调用n1个属性关联属性;之后,以文本2为输入参数调用下一次内容关联属性,再分别以文本2对应的n2个绘制属性为输入参数调用n2个属性关联属性;最后,以图片为输入参数调用第三次内容关联属性,再分别以图片对应的n3个绘制属性为输入参数调用n3个属性关联属性。初始字符串对象richtext每执行一次调用的返回值均是最后一次内容关联属性的输入参数,例如针对文本1的内容关联属性调用和每个属性关联属性调用的返回值均是字符串文本1,而在文本2的各个相关属性调用后的返回值均是字符串文本2。

上述内容关联属性的功能是建立输入参数与richtext的当前字符串之间的关联关系。参见图2,内容关联属性就是将输入字符串(文本2)指向当前字符串(文本1)。这样,便可根据任一个文本查找到其他文本。

示例性地,当待绘制内容为图片时,内容关联属性通过如下方式实现建立各待绘制内容之间的内容关联关系的功能:确定与待绘制内容对应的占位文本;通过系统运行时函数,建立占位文本与前一个待绘制内容之间的内容关联关系,并建立占位文本与图片之间的内容关联关系。由于内容关联属性是建立各个字符串之间的指向关系,所以在待绘制内容为图片时,无法直接将图片与当前字符串建立关联关系。此时内容关联属性实现中便为图片确定一个占位文本作为图片的替代字符串,该占位文本可以是根据图片的相关信息生成,也可以根据图片从本地匹配,还可以根据图片从网络端拉取。参见图2,将占位文本指向文本2,建立占位文本与richtext的当前字符串之间的关联关系,同时将占位文本指向图片本身,建立占位文本与图片之间的关联关系,以便后续操作中根据占位文本查找到图片。

上述属性关联属性的功能是建立每个待绘制内容与该待绘制内容的绘制属性之间的关联关系。也就是将每个待绘制内容指向其绘制属性。

示例性地,属性关联属性通过如下方式实现建立待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系的功能:将绘制属性存储至与待绘制内容对应的字典对象中;通过系统运行时函数,建立字典对象和待绘制内容之间的属性关联关系。由于一个待绘制内容对应的绘制属性可能不止一个,故为了便于绘制属性的管理,本实施例中采用了字典(键值对)的存储结构,来存储绘制属性。那么属性关联属性的实现中,首先为每个待绘制内容确定对应的字典对象(也称为属性字典);之后,调用当前操作的待绘制内容对应的字典对象中的各个字段值写入函数,将该待绘制内容对应的各个绘制属性存储至该字典对象中;最后,通过系统运行时函数runtime将该待绘制内容指向该字典对象,建立该待绘制内容与该字典对象之间的属性关联关系。参见图2,属性关联属性将文本1指向属性字典1,文本2指向属性字典2,图片对应的占位文本对应属性字典3。至此便建立了各个待绘制内容及其绘制属性之间的关联关系,实现了富文本的初步组装。初始字符串对象中也因填充了图文绘制的相关数据而称为目标字符串对象。

s120、以回调参数为输入参数,以链式调用方式调用目标字符串对象的图文绘制属性,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果。

其中,回调参数是指回调操作中需要执行的操作所需要的参数。根据上述说明,图文绘制属性也是分类richtext中自定义的属性,故图文绘制属性的类型也为代码块类型,其也有相应的函数实现封装。

具体地,为了实现图文高效绘制,降低主线程的性能消耗,本发明实施例中将图文绘制的过程设置在子线程中绘制,以便不影响主线程的操作。而子线程中的图文绘制完毕生成图文绘制结果后,需要将该图文绘制结果传回至主线程以便进行显示,所以本发明实施例中设置了回调操作。上述实现图文异步绘制的代码封装在目标字符串对象的图文绘制属性中,该图文绘制属性的功能应当包含二次组装富文本、异步绘制图文和根据回调参数回传图文绘制结果。实际实施时,在s110链式调用的基础上,继续链式调用该图文绘制属性,这样该图文绘制属性可以获得目标字符串对象中的最后一个关联操作的当前字符串,便可基于当前字符串来获得完整的富文本内容,进而根据富文本内容进行异步图文绘制操作。

例如,待绘制内容为图片image,其绘制属性为图片圆角半径为5,那么本发明实施例中实现异步图文绘制的链式调用代码大致可以为:richtext.append(image).cornerradius(@5).draw(^(uiview*draw,nsarray<dyrichtextrun*>*runs){[self.viewaddsubview:draw];}),其中^(uiview*draw,nsarray<dyrichtextrun*>*runs){[self.viewaddsubview:draw];}便为回调参数。

本实施例的技术方案,通过链式调用基于系统字符串类分类而生成的初始字符串对象的内容关联属性和属性关联属性,将多个待绘制内容和每个待绘制内容对应的绘制属性关联起来,生成目标字符串对象,建立了各待绘制内容之间的内容关联关系以及每个待绘制内容与相应绘制属性之间的属性关联关系,实现通过一行简单的代码便可快速组装富文本,降低了系统内存消耗,提高了图文数据的管理便捷性,也提高了开发效率。通过以回调参数为输入参数,链式调用目标字符串对象的图文绘制属性的一行简单代码,实现了在子线程中按照各绘制属性异步绘制各待绘制内容获得图文绘制结果,并将图文绘制结果以回调方式传递至主线程,达到了高效且便捷地绘制图文,进一步降低系统内存消耗,及降低系统主线程的性能消耗,从而优化系统性能的技术效果。

实施例二

本实施例在上述实施例一的基础上,对“目标字符串对象的图文绘制属性”的功能实现进行了进一步优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图3,本实施例提供的图文绘制方法中图文绘制属性的实现方法包括:

s210、依据目标字符串对象中的字符串、内容关联关系和属性关联关系,生成各目标富文本存储对象。

其中,富文本存储对象是预先定义的,用于存储富文本的类的实例化对象dyrichtextrun。目标富文本存储对象是指存储了富文本内容(待绘制内容和绘制属性)的富文本存储对象。目标富文本存储对象可以直接用于后续图文异步绘制。示例性地,目标富文本存储对象的数量与待绘制内容的数量一致,且目标富文本存储对象中包含待绘制内容和绘制属性。也就是说,每个待绘制内容均对应有一个目标富文本存储对象。

具体地,s110是将零散的待绘制内容及其绘制属性进行初步组装,为了提高后续图文绘制时富文本数据访问便捷性,本实施例中将初步组装的富文本内容进行二次组装。具体实施时,以目标字符串对象中的字符串为起始,根据内容关联关系和属性关联关系来获得各个待绘制内容及其绘制属性,并分别将各个待绘制内容及其绘制属性存储至各个独立的富文本存储对象,生成各个目标富文本存储对象。

示例性地,依据目标字符串对象中的字符串、内容关联关系和属性关联关系,生成各目标富文本存储对象包括:依据目标字符串对象中的字符串和内容关联关系,获得各待绘制内容,并分别将各待绘制内容作为内容元素存储至各初始富文本存储对象;依据属性关联关系,获得每个待绘制内容关联的绘制属性,并分别将各绘制属性作为属性元素存储至每个待绘制内容对应的初始富文本存储对象,生成各目标富文本存储对象。

具体地,首先以目标字符串对象中的字符串为起始字符串,根据内容关联关系,顺序获得各个待绘制内容。参见图2,最后一个关联的字符串为占位文本,那么从占位文本开始,先根据占位文本与图片的指向关系获得图片,并根据字符串指向关系获得文本2,再根据文本2的指向关系获得文本1。然后,将每个待绘制内容均作为初始富文本存储对象中的content属性(内容元素)进行存储,也就是分别向3个初始富文本存储对象存储文本1、文本2和图片。之后,分别根据每个待绘制内容的属性关联关系获得其绘制属性,并将获得的各个绘制属性存储至相应的属性存储对象dyrichtextattribute,且将各个属性存储对象分别作为属性元素存储至相应待绘制内容所在的初始富文本存储对象。参见图2,将绘制属性1存储至文本1所在的初始富文本存储对象,将绘制属性2存储至文本2所在的初始富文本存储对象,将绘制属性3存储至图片所在的初始富文本存储对象,便获得3个目标富文本存储对象。

应当说明的是,在将待绘制内容存储至初始富文本存储对象之前,需要先根据待绘制内容的数量创建相应数量的初始富文本存储对象,创建的各个初始富文本存储对象中均并未存储富文本相关数据。属性存储对象是预先定义的,用于存储绘制属性的类的实例化对象。

s220、依据各目标富文本存储对象生成富文本数组。

具体地,将各个目标富文本存储对象作为数组元素,存储至一个预先创建的数组中,构成富文本数组。这样可以一次处理多个富文本内容。

s230、以富文本数组和回调参数为输入参数,通过富文本管理对象调用图文绘制函数,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果。

其中,富文本管理对象为预先定义的富文本管理类dyrichtextmanager的单例对象,这样可以确保全局只有一个富文本管理对象,从而有效避免图文绘制调用出错。图文绘制函数是富文本管理类中定义的异步绘制图文的函数,该图文绘制函数定义大致为:drawwithruns:completion:,drawwithruns为第一部分函数名称,第一个冒号后为第一个函数输入参数,其为数组类型,completion为第二部分函数名称,第二个冒号后为第二个函数输入参数,其为回调。

具体地,通过图文绘制属性的输入参数获得回调参数,并分别以富文本数组和上述回调参数作为图文绘制函数的两个输入参数,通过富文本管理对象调用图文绘制函数,以触发图文绘制函数的执行。该图文绘制函数中的第一部分功能为:切换至子线程,并在子线程中解析富文本数组获得各个目标富文本存储对象,并通过遍历各个目标富文本存储对象的方式,按照各绘制属性异步绘制各待绘制内容获得图文绘制结果。上述图文绘制函数中的第二部分功能为:图文绘制操作完成之后,便根据回调参数将图文绘制结果从子线程传输至主线程中链式调用图文绘制属性的位置,从而在主线程的链式调用之后获得图文绘制结果。

本实施例的技术方案,通过依据目标字符串对象中的字符串、内容关联关系和属性关联关系,获得各个待绘制内容及其绘制属性,进而生成各目标富文本存储对象,并依据各目标富文本存储对象生成富文本数组。实现了富文本数据的二次组装,使得各个富文本数据能够被一次传入图文绘制函数,进一步提高了富文本数据的处理效率。通过以富文本数组和回调参数为输入参数,通过富文本管理对象调用图文绘制函数,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果,实现了将图文异步绘制的过程进一步封装为图文绘制函数,进一步简化了图文绘制属性的实现逻辑,从而进一步提高开发效率。

实施例三

本实施例在上述实施例二的基础上,对“富文本管理对象的图文绘制函数”的功能实现进行了进一步优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图4,本实施例提供的图文绘制方法中图文绘制函数的实现方法包括:

s310、通过预先创建的异步队列获得一个子线程。

具体地,在图文绘制函数内部实现中,首先懒加载一个全局并发队列作为异步队列。也就是,当没有该异步队列时自动创建,当已经存在该异步队列时直接使用该异步队列。异步队列的创建会直接切换至一个子线程,以执行后续功能操作。

s320、在子线程中,依据富文本数组生成各系统富文本类对象,并依据各系统富文本类对象,通过系统二维图文绘制函数,将待绘制内容按照各绘制属性绘制在一个绘图上下文中,生成目标图层对象。

具体地,在子线程中,解析富文本数组获得各个待绘制内容及其绘制属性,并通过系统提供的图文绘制相关函数来实现待绘制内容的绘制,生成能够存储图文绘制结果的目标图层对象calayer。

示例性地,s320中依据富文本数组生成各系统富文本类对象,并依据各系统富文本类对象,通过系统二维图文绘制函数,将待绘制内容按照各绘制属性绘制在一个绘图上下文中,生成目标图层对象包括:

a、为富文本数组中的每个目标富文本存储对象均创建一个系统富文本类对象。

具体地,遍历富文本数组,根据其中目标富文本存储对的数量创建相应数量的系统富文本类对象。该系统富文本类对象是基于系统富文本类cfattributedstring而生成的对象,其可以用于将富文本中的待绘制内容和绘制属性进行保存在一起,且可以被后续图文绘制相关函数识别。

创建各个系统富文本类对象之后,便需要将各个目标富文本存储对象中的数据存储至系统富文本类对象,即可执行s322或s323。

b、当目标富文本存储对象中的待绘制内容为文本时,将目标富文本存储对象中的内容元素和属性元素存储至相应目标富文本存储对象对应的系统富文本类对象中。

具体地,如果目标富文本存储对象中的内容元素(即待绘制内容)的类型为文本类型,那么可以直接从目标富文本存储对象中读取待绘制内容及其绘制属性,并将待绘制内容和转换后的绘制属性存储至该目标富文本存储对象对应的系统富文本类对象中。

c、当目标富文本存储对象中的待绘制内容为图片时,将空字符存储至相应目标富文本存储对象对应的系统富文本类对象中,并在图片数组中存储图片,在图片属性数组中对应存储图片的图片绘制属性。

具体地,如果目标富文本存储对象中的内容元素(即待绘制内容)的类型为图片类型,那么可以通过空字符创建cfattributedstring占位,并在一个图片数组imagearray中保存图片。同时,利用coretext中试算绘制大小的相关函数,确定图片的绘制位置和绘制大小等图片绘制属性,并将其存入一个图片属性数组imageframearray中。应当说明的是,图片数组imagearray和图片属性数组imageframearray中针对同一个图片的相应元素之间具有对应关系。

d、依据各系统富文本类对象生成图文渲染对象,并以图文渲染对象为输入参数,调用系统二维图文绘制函数,将各文本绘制在绘图上下文中。

具体地,在将富文本数组中的数据全部存储至各个系统富文本类对象之后,便可以进行图文绘制。首先进行文本绘制。具体实施时,先拼接所有的系统富文本类对象cfattributedstring,并通过系统函数将拼接结果转化为图文渲染对象ctframe。之后,以图文渲染对象为输入参数,通过系统二维图文绘制函数(即系统coregraphics相关函数)将图文渲染对象中的文本内容按照绘制属性全部绘制到一个新建的绘图上下文中。应当理解的是,文本绘制过程中,若遇到空字符占位,则会预留相应的空白区域,以便进行后续图片的绘制。

e、遍历图片数组和图片属性数组,按照图片属性数组中的各图片绘制属性将图片数组中的各相应图片绘制在绘图上下文中。

具体地,文本绘制完成后,便需要绘制剩余的图片。遍历图片数组,针对其中的任一个图片,从图片属性数组中获取到该图片对应的图片绘制属性,并按照图片绘制属性将该图片绘制在上述绘图上下文中。

f、依据绘图上下文生成图文绘制图片,并将图文绘制图片作为内容元素存储至预先定义的初始图层对象中,生成目标图层对象。

具体地,在文本和图片全部绘制结束后,便可以将绘图上下文保存为一个图片,作为图文绘制图片。之后,将该图文绘制图片存储至一个初始图层对象中,生成目标图层对象。

s330、依据回调参数,将目标图层对象传递至主线程作为图文绘制结果。

以斗鱼直播中弹幕系统为例,按照本发明实施例的图文绘制方法,几行代码便可以实现之前需要几百行代码才能创建的图文混排,使得系统内存降低了3/4,;同时,由于采用了异步绘制,使得cpu主线程降低了1%,gpu降低了2/3,很大程度上优化了系统性能。

本实施例的技术方案,通过预先创建的异步队列获得一个子线程;在子线程中,依据富文本数组生成各系统富文本类对象,并依据各系统富文本类对象,通过系统二维图文绘制函数,将待绘制内容按照各绘制属性绘制在一个绘图上下文中,生成目标图层对象;依据回调参数,将目标图层对象传递至主线程作为图文绘制结果。实现了利用系统提供的图文绘制函数完成子线程中的图文绘制,进一步降低开发难度,且进一步提高图文绘制效率和稳定性。

以下是本发明实施例提供的图文绘制装置的实施例,该装置与上述各实施例的图文绘制方法属于同一个发明构思,在图文绘制装置的实施例中未详尽描述的细节内容,可以参考上述图文绘制方法的实施例。

实施例四

本实施例提供一种图文绘制装置,参见图5,该装置具体包括:

关联关系建立模块510,用于分别以待绘制内容和待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各待绘制内容之间的内容关联关系,以及每个待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系;其中,待绘制内容为文本或图片,且待绘制内容的数量为至少两个;

图文绘制模块520,用于以回调参数为输入参数,以链式调用方式调用目标字符串对象的图文绘制属性,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果;

其中,初始字符串对象为基于系统字符串类而预先创建的字符串分类的实例化对象,内容关联属性、属性关联属性和图文绘制属性均为代码块类型。

可选地,关联关系建立模块510包括第一函数执行子模块,用于当待绘制内容为图片时,通过如下方式实现建立各待绘制内容之间的内容关联关系的功能:

确定与待绘制内容对应的占位文本;

通过系统运行时函数,建立占位文本与前一个待绘制内容之间的内容关联关系,并建立占位文本与图片之间的内容关联关系。

可选地,图文绘制模块520包括第三函数执行子模块,用于:通过如下方式实现按照各绘制属性异步绘制各待绘制内容获得图文绘制结果的功能:

依据目标字符串对象中的字符串、内容关联关系和属性关联关系,生成各目标富文本存储对象,并依据各目标富文本存储对象生成富文本数组;其中,目标富文本存储对象的数量与待绘制内容的数量一致,且目标富文本存储对象中包含待绘制内容和绘制属性;

以富文本数组和回调参数为输入参数,通过富文本管理对象调用图文绘制函数,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果;其中,富文本管理对象为预先定义的富文本管理类的单例对象。

进一步地,第三函数执行子模块具体用于:

依据目标字符串对象中的字符串和内容关联关系,获得各待绘制内容,并分别将各待绘制内容作为内容元素存储至各初始富文本存储对象;

依据属性关联关系,获得每个待绘制内容关联的绘制属性,并分别将各绘制属性作为属性元素存储至每个待绘制内容对应的初始富文本存储对象,生成各目标富文本存储对象。

可选地,第三函数执行子模块还具体用于通过如下方式实现按照各绘制属性异步绘制各待绘制内容获得图文绘制结果的功能:

通过预先创建的异步队列获得一个子线程;

在子线程中,依据富文本数组生成各系统富文本类对象,并依据各系统富文本类对象,通过系统二维图文绘制函数,将待绘制内容按照各绘制属性绘制在一个绘图上下文中,生成目标图层对象;

依据回调参数,将目标图层对象传递至主线程作为图文绘制结果。

进一步地,第三函数执行子模块还具体用于:

为富文本数组中的每个目标富文本存储对象均创建一个系统富文本类对象;

当目标富文本存储对象中的待绘制内容为文本时,将目标富文本存储对象中的内容元素和属性元素存储至相应目标富文本存储对象对应的系统富文本类对象中;

当目标富文本存储对象中的待绘制内容为图片时,将空字符存储至相应目标富文本存储对象对应的系统富文本类对象中,并在图片数组中存储图片,在图片属性数组中对应存储图片的图片绘制属性;

依据各系统富文本类对象生成图文渲染对象,并以图文渲染对象为输入参数,调用系统二维图文绘制函数,将各文本绘制在绘图上下文中;

遍历图片数组和图片属性数组,按照图片属性数组中的各图片绘制属性将图片数组中的各相应图片绘制在绘图上下文中;

依据绘图上下文生成图文绘制图片,并将图文绘制图片作为内容元素存储至预先定义的初始图层对象中,生成目标图层对象。

可选地,关联关系建立模块510包括第二函数执行子模块,用于通过如下方式实现建立待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系的功能:

将绘制属性存储至与待绘制内容对应的字典对象中;

通过系统运行时函数,建立字典对象和待绘制内容之间的属性关联关系。

通过本发明实施例四的一种图文绘制装置,实现了通过一行简单的代码便可快速组装富文本,降低系统内存消耗,提高图文数据的管理便捷性;以及实现了在子线程中按照各绘制属性异步绘制各待绘制内容获得图文绘制结果,并将图文绘制结果以回调方式传递至主线程,达到了高效且便捷地绘制图文,进一步降低系统内存消耗,及降低系统主线程的性能消耗,从而优化系统性能的技术效果。

本发明实施例所提供的图文绘制装置可执行本发明任意实施例所提供的图文绘制方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述图文绘制装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例五

参见图6,本实施例提供了一种电子设备600,其包括:一个或多个处理器620;存储装置610,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器620执行,使得一个或多个处理器620实现本发明实施例所提供的图文绘制方法,包括:

分别以待绘制内容和待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各待绘制内容之间的内容关联关系,以及每个待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系;其中,待绘制内容为文本或图片,且待绘制内容的数量为至少两个;

以回调参数为输入参数,以链式调用方式调用目标字符串对象的图文绘制属性,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果;

其中,初始字符串对象为基于系统字符串类而预先创建的字符串分类的实例化对象,内容关联属性、属性关联属性和图文绘制属性均为代码块类型。

当然,本领域技术人员可以理解,处理器620还可以实现本发明任意实施例所提供的图文绘制方法的技术方案。

图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图6所示,该电子设备600包括处理器620、存储装置610、输入装置630和输出装置640;电子设备中处理器620的数量可以是一个或多个,图6中以一个处理器620为例;电子设备中的处理器620、存储装置610、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线650连接为例。

存储装置610作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的图文绘制方法对应的程序指令/模块(例如,图文绘制装置中的关联关系建立模块和图文绘制模块)。

存储装置610可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置610可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置610可进一步包括相对于处理器620远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置630可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。

实施例六

本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种图文绘制方法,该方法包括:

分别以待绘制内容和待绘制内容对应的绘制属性为输入参数,以链式调用方式顺次调用初始字符串对象的内容关联属性和属性关联属性,获得目标字符串对象,以建立各待绘制内容之间的内容关联关系,以及每个待绘制内容与相应待绘制内容对应的绘制属性之间的属性关联关系;其中,待绘制内容为文本或图片,且待绘制内容的数量为至少两个;

以回调参数为输入参数,以链式调用方式调用目标字符串对象的图文绘制属性,以按照各绘制属性异步绘制各待绘制内容获得图文绘制结果;

其中,初始字符串对象为基于系统字符串类而预先创建的字符串分类的实例化对象,内容关联属性、属性关联属性和图文绘制属性均为代码块类型。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的图文绘制方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的图文绘制方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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