一种多图层绘图方法、装置、电子设备及存储介质与流程
1.本技术涉及数据处理技术领域,尤其是涉及一种多图层绘图方法、装置、电子设备及存储介质。
背景技术:
2.像素画属于点阵式图像,把像素点以肉眼可见的大小进行呈现,是一种图标风格的图像,强调清晰的轮廓、明快的彩。像素画的分辨率一般不高,每绘制一笔会对应有限数量的像素点。
3.相关技术中,可以利用像素画板等绘图工具绘制像素画。这类绘图工具包含多个绘制图层。在绘图时,可以选定对应的绘制图层进行绘制。绘制过程中,每绘制一笔就相当于在对应的绘制图层上依次增加对应的像素点。每增加一个像素点,都需要cpu重新处理对应绘制图层的所有的已绘制的像素点数据,以便于更新该绘制图层显示的图像。即每绘制一笔都需要多次处理对应绘制图层的像素点数据,使得绘制过程中对cpu的消耗较大。特别是对于低端cpu的终端,在绘画时可能出现卡顿的状况,影响绘制速度,导致绘制过程的效率较低,用户体验感不佳。
技术实现要素:
4.本技术提供一种多图层绘图方法、装置、电子设备及存储介质,加入了动态画笔层,减少用户绘画过程中的cpu消耗,高效地实现流畅绘画,提升用户体验。
5.第一方面,本技术提供一种多图层绘图方法,应用于像素图绘制软件,所述像素图绘制软件包括动态画笔层、至少一个绘制图层;所述方法包括:在接收到绘画开始指令后,进入一个绘画周期;针对每一个绘画周期,接收绘制指令,所述绘制指令包括选定的像素点的坐标数据、选定的颜数据;将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层;在接收到绘画停止指令后,结束一个绘画周期;将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述对应的图像显示在所述当前选定的绘制图层中;清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。
6.可选的,所述将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层,包括:针对所述绘制指令中的选定的每一个像素点,按选定顺序逐一判断所述绘制指令中的选定的每一个像素点是否已经加入到所述动态画笔层的动态列表;若所述绘制指令中的选定的每一个像素点未加入所述动态画笔层的动态列表,将
所述绘制指令中的选定的每一个像素点的坐标数据、选定的颜数据加入所述动态画笔层的动态列表,以使所述绘制指令中的选定的每一个像素点显示在所述动态画笔层。
7.可选的,所述方法还包括:根据接收的绘制图层选择指令,确定当前选定的绘制图层;将所述动态画笔层设置为所述当前选定的绘制图层的上方相邻图层。
8.可选的,所述方法还包括:保持所述动态画笔层始终在所有绘制图层之上。
9.可选的,所述方法还包括:根据接收的颜选取指令,确定选定的颜数据;根据接收的像素点选取指令,确定选定的像素点的坐标数据;根据选定的像素点的坐标数据和选定的颜数据,生成绘制指令。
10.可选的,所述根据接收的像素点选取指令,确定选定的像素点的坐标数据,包括:根据接收到的笔形选取指令,确定像素点选取模式;根据所述像素点选取模式,对用户触摸位置对应的像素点进行选取,确定选定的像素点的坐标数据。
11.可选的,所述清除所述动态列表中的数据,包括:判断所述动态画笔层的动态列表中的数据是否存在于所述当前选定的绘制图层的数据数组中;若所述动态画笔层的动态列表中的数据均存在于所述当前选定的绘制图层的数据数组中,则清除所述动态列表中的数据。
12.第二方面,本技术提供一种多图层绘图装置,包括:绘制开始模块,用于接收到绘画开始指令后,进入一个绘画周期;绘制指令接收模块,用于针对每一个绘画周期,接收绘制指令,所述绘制指令的各项数据包括像素点的坐标数据、用户选择的颜数据;动态绘制模块,用于将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层;绘制结束模块,用于接收到绘画停止指令,结束一个绘画周期;图像显示模块,用于将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述数据数组中的数据对应的图像显示在所述当前选定的绘制图层中;清除模块,用于清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。
13.可选的,所述动态绘制模块,具体用于:针对所述绘制指令中的选定的每一个像素点,按选定顺序逐一判断所述绘制指令中的选定的每一个像素点是否已经加入到所述动态画笔层的动态列表;若所述绘制指令中的选定的每一个像素点未加入所述动态画笔层的动态列表,将所述绘制指令中的选定的每一个像素点的坐标数据、选定的颜数据加入所述动态画笔层的动态列表,以使所述绘制指令中的选定的每一个像素点显示在所述动态画笔层。
14.可选的,所述装置还包括移动图层模块,用于:根据接收的绘制图层选择指令,确定当前选定的绘制图层;将所述动态画笔层设置为所述当前选定的绘制图层的上方相邻图层。
15.可选的,所述装置还包括固定图层模块,用于:保持所述动态画笔层始终在所有绘制图层之上。
16.可选的,所述装置还包括绘制指令生成模块,用于:根据接收的颜选取指令,确定选定的颜数据;根据接收的像素点选取指令,确定选定的像素点的坐标数据;根据选定的像素点的坐标数据和选定的颜数据,生成绘制指令。
17.可选的,所述绘制指令生成模块,具体用于:根据接收到的笔形选取指令,确定像素点选取模式;根据所述像素点选取模式,对用户触摸位置对应的像素点进行选取,确定选定的像素点的坐标数据。
18.可选的,所述清除模块,具体用于:判断所述动态画笔层的动态列表中的数据是否存在于所述当前选定的绘制图层的数据数组中;若所述动态画笔层的动态列表中的数据均存在于所述当前选定的绘制图层的数据数组中,则清除所述动态列表中的数据。
19.第三方面,本技术提供一种电子设备,包括:存储器和处理器,所述存储器上存储有能够被处理器加载并执行第一方面的方法的计算机程序。
20.第四方面,本技术提供一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面的方法的计算机程序。
21.本技术提供了一种多图层绘图方法、装置、电子设备及存储介质。在绘制过程中新增的图像内容会首先在动态画笔层上实现,再映射到绘制图层上,并将动态画笔层清空。每一个绘画周期中,根据绘制指令逐一选定绘制的若干的像素点,并逐一将这些点的坐标数据、选定的颜数据加入动态画笔层的动态列表。在过程中,对应于动态列表的若干次更新,cpu只需要逐一处理这几次更新过程对应的少量像素点的少量数据。在一个绘画周期结束后,再将这些选定的像素点的坐标数据、选定的颜数据同时加入选定的绘制图层的数据数组中。在过程中,对应于数据数组的一次更新,cpu只需要处理一次数据数组中的数据。相对于现有技术直接在绘制图层上绘制的方式,通过多次对动态列表中少量数据的处理来减少对对应的数据数组的数据的处理次数。整体上减少了cpu处理的数据量,降低了处理器资源的消耗,减少甚至避免了绘画时出现卡顿的情况,提升用户的绘制速度,提高绘制效率,提升用户体验感。随着绘制进度的推进,图像内容增加,数据数组中的数据增多,本技术的方案的效果也更加显著。
22.另外,判断选定的像素点是否加入到动态列表,若是已经加入则不再重复加入,减少cpu对于图像的刷新次数,减少cpu的消耗,同时提高绘制效率。
23.另外,调整动态画笔层为选定的绘制图层的上方相邻图层,在动态画笔层上动态显示后落在选定的绘制图层上,在用户的绘制视角上与没有加入动态画笔层直接在选定绘制图层上的绘制效果相同的。
24.除此之外还可以在用户选定不同的图层作为当前图层时,保持动态画笔层始终位于所有的绘制图层之上。这样调整可以让用户看到自己绘制的内容是不是符合自己的设想,不会受到上层绘制图层非透明部分的遮挡,提升用户体验感。
25.另外,针对动态画笔层的动态列表中的数据,判断当前绘画周期的图像是否已经正确显示到绘制图层上,如果还未绘制到图层上,将动态列表中的数据发送到绘制图层和的数据数组上,若已经绘制完成,清除动态列表中的数据。可以保证用户想要绘制的图像已经在绘制图层上显示出来,避免重新绘制绘画周期的图像而消耗cpu,也避免了用户体验感的降低。
附图说明
26.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1为本技术一实施例提供的一种应用场景示意图;图2为本技术一实施例提供的一种多图层绘图方法的流程图;图3为本技术一实施例提供的一种动态画笔层调整方式流程图;图4为本技术一实施例提供的一种用户绘画过程的流程示意图;图5为本技术一实施例提供的一种多图层绘图装置的结构示意图;图6为本技术一实施例提供的一种电子设备的结构示意图。
具体实施方式
28.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
30.下面结合说明书附图对本技术实施例作进一步详细描述。
31.目前可以利用像素画板等绘图工具绘制像素画,这类绘图工具包含多个绘制图层,在绘制过程中,用户的每一笔都包含若干个像素点,每次在绘制图层上增加一个点,都需要cpu重新绘制图层上的所有像素点,以便于更新绘制图层上显示的图像,绘画量较大时对于cpu的消耗很大。
32.基于此,本技术提供一种多图层绘图方法、装置、电子设备及存储介质,加入了动态画笔层,减少用户绘画过程中的cpu消耗,高效地实现流畅绘画,提升用户体验。
33.图1为本技术提供的一种应用场景示意图,某用户在进行像素图像绘制时,应用本技术的方法进行绘制。具体的,在绘图设备上安装像素图绘制软件,像素图绘制软件上包含动态画笔层、至少一个绘制图层。在图1的绘制场景中绘图设备是智能手机,在其他场景中
也可以是平板电脑等智能设备。用户可以通过触控笔触控绘图设备的方式向像素图绘制软件发送指令,基于像素图绘制软件的多图层绘图方法,实现绘制过程,达到减少cpu消耗,高效绘图,提升用户体验感的目的。具体的实现方式可以参考以下实施例。
34.图2为本技术一实施例提供的一种多图层绘图方法的流程图,本实施例的方法可以应用于以上场景中的绘图设备。像素图绘制软件包括动态画笔层、至少一个绘制图层,除此之外还可以包括网格层。按照从下到上依次为绘制图层、动态画笔层、网格层的方式排列。网格层把每个像素分隔开,可以根据用户的绘制需求来初始化网格大小。在绘制过程中,网格层不会发生变化,也不会重新绘制。动态画笔层有一个对应的动态列表记录选定的像素点的数据,用于动态显示用户每一次绘图的变化。绘制图层上的区域分为绘制区和工具栏。绘制图层包含1-n层,按照从下到上依次是绘制图层1、绘制图层2、绘制图层3
……
绘制图层n。上层绘制图层的非透明部分会挡住下层绘制图层,每一层工具栏上包含不同可供用户选择的颜、笔形、可选的绘制图层等按键。如图2所示的,该方法包括:s201、在接收到绘画开始指令后,进入一个绘画周期。
35.一些实施例中,用户在工具栏上选择某一个绘制图层作为当前选定的绘制图层,选择颜、笔形后在绘制区触摸到第一个位置,这个触摸信息可以作为绘画开始指令。
36.另一些实施例中,用户在本绘画周期沿用上一绘画周期的颜、笔形等,不需要重新选择,在绘制区触摸到的第一个位置停留,这个停留触摸信息可以作为绘画开始指令。
37.s202、针对每一个绘画周期,接收绘制指令,所述绘制指令包括选定的像素点的坐标数据、选定的颜数据。
38.具体的,每一个绘画周期都对应用户的一笔绘制,对应一条绘制指令。每一笔绘制都包含若干个选定的像素点,为了使选定的像素点按照用户的一笔选定的顺序显示在绘制图层上,需要确定每一个像素点的坐标数据和颜数据。
39.一些实施例中,用户会在不同绘画周期选择不同的颜数据,根据用户不同的选择生成新的绘制指令。
40.在另一些实施例中,用户在不同的绘画周期选择相同的颜数据,新的绘画周期开始之前不需要重新点击对应颜,默认调用上一个绘画周期的颜数据生成新的绘制指令。
41.s203、将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层。
42.具体的,每一个绘画周期包含的像素点是有先后顺序的,按照用户选定的顺序将像素点的数据逐一加入动态画笔层的动态列表处理后显示,每加入一个像素点都要将显示出的图像刷新。
43.一些实施例中,假设某一个绘画周期包含五个像素点,将这五个像素点按照用户选定的顺序一个一个加入到动态画笔层的动态列表处理后显示在动态画笔层。第一个选定的像素点显示完成后,将第二个选定的像素点数据加入动态列表,处理第一个选定的像素点和第二个选定的像素点后显示在动态画笔层;将第三个选定的像素点数据加入动态列表,处理第一个选定的像素点、第二个选定的像素点、第三个选定的像素点后显示在动态画笔层
……
如此循环处理,将一个绘画周期上的图像动态显示在动态画笔层上。
44.s204、在接收到绘画停止指令后,结束一个绘画周期。
45.具体的,用户可以在绘制区或者工具栏上操作来触发绘画停止指令,一些实施例中,绘画停止指令可以是抬手的信息指令。一个绘画周期包含一笔绘制,从触摸到第一个像素点开始按照选定的顺序逐个绘制,绘制完最后一个像素点后抬手。
46.另一些实施例中,绘画停止指令可以是用户点击工具栏上的保存按键的信息指令。用户进行了若干个绘画周期后想要停止绘画,此时对于绘制区产生的额外触摸信息会使绘制图层上显示额外的图像。为了避免误触的情况,用户可以通过点击工具栏上的保存按键,以使已选择的笔形、颜数据全部清空,需要用户重新进行点选才能开始下一周期的绘制。
47.s205、将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述对应的图像显示在所述当前选定的绘制图层中。
48.具体的,绘制图层每加入一个选定的像素点,都会将绘制图层上的已有图像数据进行一次处理。将动态画笔层的动态列表中已经动态显示过的选定的像素点数据一起发送到当前选定的绘制图层的数据数组中,对绘制图层上已有的图像数据以及对应绘画周期的数据进行处理,一次性显示绘制图层上的图像。
49.s206、清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。
50.每一个绘画周期结束后,将动态列表中的数据清除,动态画笔层上相对应的图像也被清空。保证动态画笔层每次只需要处理一个绘画周期的选定的像素点并显示出来。
51.本实施例提供的多图层绘图方法,在绘制过程中新增的图像内容会首先在动态画笔层上实现,再映射到绘制图层上,并将动态画笔层清空。每一个绘画周期中,根据绘制指令逐一选定绘制的若干的像素点,并逐一将这些点的坐标数据、选定的颜数据加入动态画笔层的动态列表。在过程中,对应于动态列表的若干次更新,cpu只需要逐一处理这几次更新过程对应的少量像素点的少量数据。在一个绘画周期结束后,再将这些选定的像素点的坐标数据、选定的颜数据同时加入选定的绘制图层的数据数组中。在过程中,对应于数据数组的一次更新,cpu只需要处理一次数据数组中的数据。相对于现有技术直接在绘制图层上绘制的方式,通过多次对动态列表中少量数据的处理来减少对对应的数据数组的数据的处理次数。整体上减少了cpu处理的数据量,降低了处理器资源的消耗,减少甚至避免了绘画时出现卡顿的情况,提升用户的绘制速度,提高绘制效率,提升用户体验感。随着绘制进度的推进,图像内容增加,数据数组中的数据增多,本技术的方案的效果也更加显著。
52.在一些实施例中,上述的将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层,具体包括:针对所述绘制指令中的选定的每一个像素点,按选定顺序逐一判断所述绘制指令中的选定的每一个像素点是否已经加入到所述动态画笔层的动态列表;若所述绘制指令中的选定的每一个像素点未加入所述动态画笔层的动态列表,将所述绘制指令中的选定的每一个像素点的坐标数据、选定的颜数据加入所述动态画笔层的动态列表,以使所述绘制指令中的选定的每一个像素点显示在所述动态画笔层。
53.用户绘制的一笔可能存在重合的部分。判断选定的每一个像素点是否已经加入到动态列表中,若是没有加入,就加入到动态列表中,显示在动态画笔层上;若是已经加入了动态列表,也就是出现了重合的像素点,那就不必要再次加入重复处理,等待该绘画周期结束后显示到选定的绘制图层上即可。
54.本实施例判断选定的像素点是否加入到动态列表,若是已经加入则不再重复加入,减少cpu对于图像的刷新次数,减少cpu的消耗,同时提高绘制效率。
55.在一些实施例中,可以调整动态画笔层的位置进行绘制,动态画笔层的调整方式包括:根据接收的绘制图层选择指令,确定当前选定的绘制图层;将所述动态画笔层设置为所述当前选定的绘制图层的上方相邻图层。
56.绘制图层的排列方式可以参照图2对应实施例的描述,从下到上依次为绘制图层1、绘制图层2、绘制图层3
……
绘制图层n-1、绘制图层n。用户选择某一个绘制图层作为当前绘画周期对应的绘制图层。将动态画笔层移动到当前选定的绘制图层的上方,如图3所示。假设上一绘画周期选定的绘制图层为顶层绘制图层n,动态画笔层位于绘制图层n的上方相邻。这一绘画周期选择次顶层绘制图层n-1时,绘制图层的排列顺序不变,移动动态画笔层到当前选定的次顶层绘制图层n-1的上方,顶层绘制图层n的下方。这一绘画周期包含的绘制图像内容会先显示在动态画笔层上,然后映射到选定的绘制图层上,绘制过程受上层绘制图层非透明部分遮挡。
57.本实施例调整动态画笔层为选定的绘制图层的上方相邻图层,在动态画笔层上动态显示后落在选定的绘制图层上,在用户的绘制视角上与没有加入动态画笔层直接在选定绘制图层上的绘制效果相同的。
58.在一些实施例中,动态画笔层的调整方式还包括:保持所述动态画笔层始终在所有绘制图层之上。
59.用户选定不同的图层作为当前绘制图层,始终将动态画笔层设置在网格层之下,所有绘制图层之上,保持动态画笔层的位置不变进行绘制。
60.本实施例在用户选定不同的图层作为当前图层时,保持动态画笔层始终位于所有的绘制图层之上。这样调整可以让用户看到自己绘制的内容是不是符合自己的设想,不会受到上层绘制图层非透明部分的遮挡,提升用户体验感。
61.在一些实施例中,生成绘制指令,具体包括:根据接收的颜选取指令,确定选定的颜数据;根据接收的像素点选取指令,确定选定的像素点的坐标数据;根据选定的像素点的坐标数据和选定的颜数据,生成绘制指令。
62.为实现上述步骤s202中接收绘制指令,可以确定用户选择的颜数据和坐标数据。颜选取指令可以是用户点击工具栏上想选择的颜按键,根据设定的颜位置列表对应用户选择的颜,将对应的颜数据加入到绘制指令;颜选取指令也可以是用户在多个绘画周期不需要改变颜时,根据用户上一次点击工具栏选择的颜确定本绘画周期的颜数据,加入到绘制指令中。像素点选取指令可以是用户触摸绘制区的触摸信息,根据用户的触摸位置按照顺序选定该位置包含的像素点,确定出选定的像素点的坐标数据,将对应的坐标数据加入到绘制指令中。
63.本实施例可以让用户在工具栏上选择自己需要的颜,生成对应的颜,按照用户本身的绘图想法选定像素点,根据选定的颜数据和选定的像素点的坐标数据生成绘制指令进行绘制。
64.在一些实施例中,上述的根据接收的像素点选取指令,确定选定的像素点的坐标数据,具体包括:根据接收到的笔形选取指令,确定像素点选取模式;根据所述像素点选取模式,对用户触摸位置对应的像素点进行选取,确定选定的像素点的坐标数据。
65.用户在绘画周期中选择不同的笔形,该绘画周期包含的像素点的范围不同。笔形可以包含:粗笔形、细笔形。两种笔形的选取模式不同,粗笔形在相同的一笔绘制中选取的像素点较多,细笔形在相同的一笔绘制中选取的像素点较少。例如用户在绘制区触摸位置可能只有半个像素点的大小,在选择了一种粗笔形之后,选取的可能是距离用户在绘制区触摸的点最近的两个像素点。用户开始一个绘画周期,按照顺序完成一笔绘制,根据用户选定的笔形和选定的顺序,确定该绘画周期选定的像素点的坐标数据。
66.本实施例可以让用户在工具栏上选择自己需要的笔形,确定像素点的选取模式,进而确定对应绘画周期内包含的像素点与像素点的坐标数据,与颜数据一起显现在图层上,让用户根据自己的需求选择笔形来控制选取像素点的范围。
67.在一些实施例中,上述的清除所述动态列表中的数据,具体可以包括:判断所述动态画笔层的动态列表中的数据是否存在于所述当前选定的绘制图层的数据数组中;若所述动态画笔层的动态列表中的数据均存在于所述当前选定的绘制图层的数据数组中,则清除所述动态列表中的数据。
68.绘画周期中的选定的像素点动态显示在动态画笔层之后需要映射到选定的绘制图层上。判断动态画笔层的动态列表中本绘画周期的数据是否存在于当前选定的绘制图层的数据数组中,若是存在,说明本绘画周期的图像内容已经成功映射到了当前选定的绘制图层上,接下来可以直接清除动态列表里本绘画周期对应的数据。若是不存在可能是出现外部的因素导致未能成功映射,此时需要将数据再次发送到当前选定的绘制图层的数据数组中进行映射。
69.本实施例可以判断当前绘画周期的图像是否已经正确显示到绘制图层上,如果还未绘制到图层上,将动态列表中的数据发送到绘制图层和的数据数组上,若已经绘制完成,清除动态列表中的数据。可以保证用户想要绘制的图像已经在绘制图层上显示出来,避免重新绘制绘画周期的图像而消耗cpu,也避免了用户体验感的降低。
70.在另一些实施例中,本技术设计一种高效的专门针对像素画的多图层画板(像素图绘制软件)。即使在cpu和内存都比较弱的终端依然能够高效地实现针对像素图的多图层画板。在用户绘画过程中能够流畅地不卡顿地绘画。
71.为了追求用户在绘画过程中实现画板分为多个“视图控件”(绘制图层)从上到下的组合叠加的形式,在用户的视角上,上层视图的非透明部分会挡住下层视图。主要目的是为了保证用户在绘画过程中高效地动态呈现改变用户所绘制的点。网格层在像素画板中,像素分辨率一般不高,有一些纵横相交的网格,把每个像素分隔开,在画板的初始化的时候会根据像素画板的分辨率来初始化网格。在用户绘画过程中网格层不会发生变化,也不会重新绘制,保证网格层不会浪费cpu。动态画笔层用于动态显示用户每一次绘图的变化,周期从用户手指按下屏幕开始到手指抬起结束,当用户选择不同的图层作为当前图层的时候,需要动态调整画笔图层的层次,保证画笔图层在当前图层m(当前绘制图层)的上面,在图层m+1的下面。整个过程不消耗太多cpu,也不需要重新生成或者销毁图层。图层1-m(绘制图层)用于在多图层画板(像素图绘制软件)中,分别显示每个图层的画面,上层图层的非透明部分会挡住下层图层。每一层都有一个“数据数组”记录当前图层每一个点的颜。图层每次重新绘制都从这个“数据数组”生成图像绘制到图层中。
72.用户的绘画过程如图4所示,从用户手指按下屏幕开始到手指抬起结束算作一个
周期。
73.使用动态列表list(动态画笔层的动态列表)数据结构记录绘画周期的数据,每当用户触摸一个“画板点”(像素点)的时候,判定是否已经加入列表list,如果没有则把坐标信息加入动态列表list并通知动态画笔层实时刷新。
74.动态画笔层收到实时刷新通知后,从动态列表list获取所有点的坐标数据,在相对应的坐标绘制对应的点。
75.当用户手指抬起后,通知用户当前选中的图层m(当前绘制图层),图层m从动态列表list中获取当前周期的坐标数据,修改图层的“数据数组”,并重新绘制图层视图,也清理动态list的数据,重新绘制动态画笔层(相当于清理动态画笔层的点)。这个过程相当于把动态画笔层的点提取,映射到图层m当中。
76.绘制过程中高效部分说明:1.整个过程网格层不需要重新绘制,不浪费cpu。2.由于像素画板的分辨率不高,用户每一笔通常只是修改几个点的数据,动态画笔层每次只需要绘制几个点的数据,不需要重绘整个图层的数据。3.图层只有在最后用户抬手后才需要重新绘制,节省cpu开支。
77.通过分层架构,加入了动态画笔层,大幅度减少用户绘画过程中的cpu消耗,提升用户体验,保证低端cpu终端也能实现多层像素画板的功能,增强产品的体验。
78.图5为本技术一实施例提供的一种多图层绘图装置的结构示意图,如图5所示的,本实施例的多图层绘图装置500包括:绘画周期开始模块501、绘制指令接收模块502、动态绘制模块503、绘制结束模块504、图像显示模块505、清除模块506。
79.绘制开始模块501,用于接收到绘画开始指令后,进入一个绘画周期;绘制指令接收模块502,用于针对每一个绘画周期,接收绘制指令,所述绘制指令的各项数据包括像素点的坐标数据、用户选择的颜数据;动态绘制模块503,用于将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层;绘制结束模块504,用于接收到绘画停止指令,结束一个绘画周期;图像显示模块505,用于将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述数据数组中的数据对应的图像显示在所述当前选定的绘制图层中;清除模块506,用于清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。
80.可选的,所述动态绘制模块503,具体用于:针对所述绘制指令中的选定的每一个像素点,按选定顺序逐一判断所述绘制指令中的选定的每一个像素点是否已经加入到所述动态画笔层的动态列表;若所述绘制指令中的选定的每一个像素点未加入所述动态画笔层的动态列表,将所述绘制指令中的选定的每一个像素点的坐标数据、选定的颜数据加入所述动态画笔层的动态列表,以使所述绘制指令中的选定的每一个像素点显示在所述动态画笔层。
81.可选的,所述装置500还包括移动图层模块507,用于:根据接收的绘制图层选择指令,确定当前选定的绘制图层;
programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
94.存储器601用于存储执行本技术方案的应用程序代码,并由处理器602来控制执行。处理器602用于执行存储器601中存储的应用程序代码,以实现前述方法实施例所示的内容。
95.其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。还可以为服务器等。图6示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
96.本实施例的电子设备,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
97.本技术还提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上实施例中的方法的计算机程序。
98.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
技术特征:
1.一种多图层绘图方法,其特征在于,应用于像素图绘制软件,所述像素图绘制软件包括动态画笔层、至少一个绘制图层;所述方法包括:在接收到绘画开始指令后,进入一个绘画周期;针对每一个绘画周期,接收绘制指令,所述绘制指令包括选定的像素点的坐标数据、选定的颜数据;将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层;在接收到绘画停止指令后,结束一个绘画周期;将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述对应的图像显示在所述当前选定的绘制图层中;清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。2.根据权利要求1所述的方法,其特征在于,所述将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层,包括:针对所述绘制指令中的选定的每一个像素点,按选定顺序逐一判断所述绘制指令中的选定的每一个像素点是否已经加入到所述动态画笔层的动态列表;若所述绘制指令中的选定的每一个像素点未加入所述动态画笔层的动态列表,将所述绘制指令中的选定的每一个像素点的坐标数据、选定的颜数据加入所述动态画笔层的动态列表,以使所述绘制指令中的选定的每一个像素点显示在所述动态画笔层。3.根据权利要求1或2所述的方法,其特征在于,还包括:根据接收的绘制图层选择指令,确定当前选定的绘制图层;将所述动态画笔层设置为所述当前选定的绘制图层的上方相邻图层。4.根据权利要求1或2所述的方法,其特征在于,还包括:保持所述动态画笔层始终在所有绘制图层之上。5.根据权利要求1或2所述的方法,其特征在于,还包括:根据接收的颜选取指令,确定选定的颜数据;根据接收的像素点选取指令,确定选定的像素点的坐标数据;根据选定的像素点的坐标数据和选定的颜数据,生成绘制指令。6.根据权利要求5所述的方法,其特征在于,所述根据接收的像素点选取指令,确定选定的像素点的坐标数据,包括:根据接收到的笔形选取指令,确定像素点选取模式;根据所述像素点选取模式,对用户触摸位置对应的像素点进行选取,确定选定的像素点的坐标数据。7.根据权利要求1、2、6中任一项所述的方法,其特征在于,所述清除所述动态列表中的数据,包括:判断所述动态画笔层的动态列表中的数据是否存在于所述当前选定的绘制图层的数据数组中;若所述动态画笔层的动态列表中的数据均存在于所述当前选定的绘制图层的数据数组中,则清除所述动态列表中的数据。
8.一种多图层绘图装置,其特征在于,包括:绘制开始模块,用于接收到绘画开始指令后,进入一个绘画周期;绘制指令接收模块,用于针对每一个绘画周期,接收绘制指令,所述绘制指令的各项数据包括像素点的坐标数据、用户选择的颜数据;动态绘制模块,用于将所述绘制指令中的选定的像素点的坐标数据、选定的颜数据逐一加入动态画笔层的动态列表,以使所述绘制指令对应的图像动态显示在所述动态画笔层;绘制结束模块,用于接收到绘画停止指令,结束一个绘画周期;图像显示模块,用于将对应绘画周期内所述动态列表中的数据发送到当前选定的绘制图层的数据数组中,以使所述数据数组中的数据对应的图像显示在所述当前选定的绘制图层中;清除模块,用于清除所述动态列表中的数据,以清除所述动态画笔层上显示的图像。9.一种电子设备,其特征在于,包括:存储器和处理器;所述存储器,用于存储程序指令;所述处理器,用于调用并执行所述存储器中的程序指令,执行如权利要求1-7任一项所述的方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序;所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的方法。
技术总结
本申请涉及一种多图层绘图方法、装置、电子设备及存储介质。像素图绘制软件可以接收绘画开始指令进入绘画周期;接收绘制指令,将绘制指令中选定的坐标数据、选定的颜数据注意加入动态画笔层进行动态绘制;接收绘画停止指令结束当前绘画周期;将对应绘画周期的数据发送到当前选定的绘制图层的数据数组中,整体显示在当前选定的绘制图层;显示成功后清除动态画笔层的动态列表中的数据,以清除动态画笔层显示的图像。显示的图像。显示的图像。
