一种可擦除顶层局部区域笔画的橡皮擦实现方法及系统转让专利

申请号 : CN202010878382.3

文献号 : CN112035035B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈清财吴湘平

申请人 : 哈尔滨工业大学(深圳)

摘要 :

本发明提供了一种可擦除顶层局部区域笔画的橡皮擦实现方法及系统,该方法包括其包括以下步骤:步骤S1,建立像素点索引列表;步骤S2,通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;步骤S3,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;步骤S4,根据删除笔段,对该笔画进行局部区域的删除;步骤S5,对删除后的笔画进行重构,更新像素索引列表,重绘删除后的笔画;用户绘图时,当结束一个笔画的绘制时,执行上述步骤S2;用户使用橡皮擦擦除时,重复步骤S3到步骤S5,直到用户停止橡皮擦擦除。采用本发明的技术方案,实现分层处理和局部擦除,提高了绘画编辑效率。

权利要求 :

1.一种可擦除顶层局部区域笔画的橡皮擦实现方法,其特征在于,其包括以下步骤:步骤S1,建立像素点索引列表;

步骤S2,通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;

步骤S3,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;

步骤S4,根据删除笔段,在笔画列表对该笔画进行局部区域或完全的删除;

步骤S5,对删除后的笔画进行重构,更新像素点索引列表,重绘删除后的笔画;

用户绘图时,当结束一个笔画的绘制时,执行上述步骤S2;

用户使用橡皮擦擦除时,重复步骤S3到步骤S5,直到用户停止橡皮擦擦除;

步骤S3包括如下步骤:

步骤S31,计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;

步骤S32,根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;

步骤S33,取出删除字典中的key值,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;

步骤S34,对由步骤S33得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到一段一段的删除笔段;

步骤S5中,所述对删除后的笔画进行重构包括:

如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;

如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;

如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。

2.根据权利要求1所述的可擦除顶层局部区域笔画的橡皮擦实现方法,其特征在于,步骤S1包括如下步骤:步骤S11,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;

步骤S12,开辟一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;

步骤S13,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表。

3.根据权利要求2所述的可擦除顶层局部区域笔画的橡皮擦实现方法,其特征在于,步骤S2包括如下步骤:步骤S21,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;

步骤S22,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;

步骤S23,根据步骤S22中计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中。

4.根据权利要求3所述的可擦除顶层局部区域笔画的橡皮擦实现方法,其特征在于:步骤S23中,所述新增的插值平滑笔画中的点信息包括该点所在的笔画索引、该点是否为原始采集点、该点在新增的插值平滑笔画中的位置索引;

步骤S4中,在插值平滑笔画列表中对笔画进行局部区域或完全删除,其中删除的区域包括用户删除笔画的前端区域、用户删除笔画的中间区域、用户删除笔画的尾部区域或用户删除整个笔画。

5.一种可擦除顶层局部区域笔画的橡皮擦实现系统,其特征在于,其包括:像素点索引列表建立模块,用于建立像素点索引列表;

原始点集采集和插值模块,用于通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;

待删除的顶层笔画点信息寻找模块,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;

删除模块,根据删除笔段,在笔画列表对该笔画进行局部区域或完全删除;

重构模块,对删除后的笔画进行重构,更新像素点索引列表,重绘删除后的笔画;

用户绘图时,当结束一个笔画的绘制时,原始点集采集和插值模块执行动作;

用户使用橡皮擦擦除时,待删除的顶层笔画点信息寻找模块、删除模块和重构模块重复执行动作,直到用户停止橡皮擦擦除;

待删除的顶层笔画点信息寻找模块执行如下操作:

计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;

根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;

取出删除字典中的key值,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;

对得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到删除笔段;

所述重构模块根据原始笔画被删除的情况不同,执行如下操作:

如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;

如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;

如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。

6.根据权利要求5所述的可擦除顶层局部区域笔画的橡皮擦实现系统,其特征在于:所述像素点索引列表建立模块包括:实际像素获取模块,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;

像素点索引列表初始化模块,开辟一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;

笔画列表新建模块,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表;

所述原始点集采集和插值模块包括:

赋值模块,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;

像素点索引计算模块,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;

插值点信息存取模块,根据计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中;其中,所述新增的插值平滑笔画中的点信息包括该点所在的笔画索引、该点是否为原始采集点、该点在新增的插值平滑笔画中的位置索引;

所述删除模块在插值平滑笔画列表中对笔画进行局部区域或完全删除,其中删除的区域包括用户删除笔画的前端区域、用户删除笔画的中间区域、用户删除笔画的尾部区域或用户删除整个笔画。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1 4任一项所述的~可擦除顶层局部区域笔画的橡皮擦实现方法。

8.一种装置,其包括相连的处理器和存储器,其特征在于:所述处理器用于执行所述存储器中存储的计算机程序,以执行如权利要求1 4中任一项所述的可擦除顶层局部区域笔~画的橡皮擦实现方法。

说明书 :

一种可擦除顶层局部区域笔画的橡皮擦实现方法及系统

技术领域

[0001] 本发明属于人机交互技术领域,尤其涉及一种可擦除顶层局部区域笔画的橡皮擦实现方法及系统。

背景技术

[0002] 随着近些年数码、电子产品的飞速发展,大量的触屏终端产品不断产生,并受到了广大用户的认可和欢迎。而传统的在纸质版上进行书写绘画的方式具有时间和空间上的限制,在大屏时代,用户更倾向于在电子设备上进行随时随地地书写绘画。在这种形势和需求下,开发出具有更高效、更便捷、更符合用户使用习惯和风格特点的书写绘画方式已经成为了广泛终端用户的迫切需求。
[0003] 随着近几年手写绘画的不断改进,当前绘画技术已经越来越成熟。现在的绘画主要是按白板的形式,虽然绘图的时候是一笔一笔画上去的,但是在橡皮擦擦除的时候,都是擦除橡皮擦覆盖区域里的所有笔画,这样导致了前期所画的背景和笔画都被擦除了。例如专利CN201310224575.7《一种应用于网页的矢量图形的操作方法和装置》公开了一种像素级别的擦除方式,实现按量擦除;专利CN201410362793.1《一种对图像进行局部处理的方法》公开了一种通过预先对图像进行分割以达到对图像进行局部处理目的的方法;专利CN201410664159.3《多功能交互式智能多媒体电子黑板》通过屏幕上压力和电子黑板擦发射的正在擦除的信号来判断出黑板擦擦除的位置和轨迹,来将已显示的内容擦除。但是这些方法的具体技术方案都不能解决分层擦除的问题。而现有的解决方案是撤销擦除和类似于PhotoShop(缩写:PS)那样的分层处理,撤销擦除是每次擦除,删除橡皮擦所在的整个笔画,不能只擦除橡皮擦所覆盖的笔画区域,存在不够灵活的问题。PS分层擦除是将每个笔画放置在一层,这样当需要擦除笔画的时候,需要切换到相应的笔画层,才能进行局部或者全部笔画的擦除。但是这样的方式也存在一些问题,当笔画很密集的时候,层数会很多,层管理非常复杂,层与层之间的切换擦除也很繁琐。这不仅影响了用户的绘图速度,也影响了用户绘图的自然性和流畅性,使得用户体验满意度急剧降低。
[0004] 针对上述技术问题,当前橡皮擦擦除方式还没有具体的解决方法,究其原因有两点:(1)不分层,无法局部擦除;(2)分层处理,难以管理。

发明内容

[0005] 针对以上技术问题,本发明公开了一种可擦除顶层局部区域笔画的橡皮擦实现方法及系统,解决了在图像编辑或电子白板绘图中橡皮擦擦除方式的问题,提供了一种更自然的、可擦除顶层局部区域笔画的橡皮擦实现方法。
[0006] 对此,本发明采用的技术方案为:
[0007] 一种可擦除顶层局部区域笔画的橡皮擦实现方法,其特征在于,其包括以下步骤:
[0008] 步骤S1,建立像素点索引列表;
[0009] 步骤S2,通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;
[0010] 步骤S3,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;
[0011] 步骤S4,根据删除笔段,对该笔画进行局部区域的删除;
[0012] 步骤S5,对删除后的笔画进行重构,更新像素索引列表,重绘删除后的笔画;
[0013] 用户绘图时,当结束一个笔画的绘制时,执行上述步骤S2;
[0014] 用户使用橡皮擦擦除时,重复步骤S3到步骤S5,直到用户停止橡皮擦擦除。
[0015] 作为本发明的进一步改进,步骤S1包括如下步骤:
[0016] 步骤S11,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;
[0017] 步骤S12,开辟绘一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;
[0018] 步骤S13,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表。
[0019] 采用上述步骤,可以计算像素点索引列表的大小。
[0020] 作为本发明的进一步改进,步骤S2包括如下步骤:
[0021] 步骤S21,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;
[0022] 步骤S22,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;其中,计算方法为:像素索引=点x方向坐标+点y方向坐标×绘图界面像素点宽;
[0023] 步骤S23,根据步骤S22中计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中。
[0024] 采用上述步骤,实现将原始点和插值点信息存储到像素索引列表中。
[0025] 作为本发明的进一步改进,步骤S23中,所述新增的插值平滑笔画中的点信息包包括但不局限于以下信息:
[0026] (1)该点所在的笔画索引;
[0027] (2)该点是否为原始采集点;
[0028] (3)该点在新增的插值平滑笔画中的位置索引。
[0029] 作为本发明的进一步改进,步骤S3包括如下步骤:
[0030] 步骤S31,计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;
[0031] 步骤S32,根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;
[0032] 步骤S33,取出删除字典中的key值,即为笔画索引,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;
[0033] 步骤S34,对由步骤S33得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到一段一段连续删除的点信息,即为删除笔段。
[0034] 采用上述步骤,用户点击或者移动橡皮擦后,可以寻找到橡皮擦覆盖区域的顶层笔画点。
[0035] 作为本发明的进一步改进,步骤S4中,对该笔画进行局部区域的删除的区域包括以下四种情况:
[0036] (1)用户删除笔画的前端区域;
[0037] (2)用户删除笔画的中间区域;
[0038] (3)用户删除笔画的尾部区域;
[0039] (4)用户删除整个笔画。
[0040] 作为本发明的进一步改进,步骤S5中,用户在进行笔画删除后,剩下的笔画包括三种情况,根据这三种情况所述对删除后的笔画进行重构分别为:
[0041] 如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;
[0042] 如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;
[0043] 如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。
[0044] 本发明还公开了一种可擦除顶层局部区域笔画的橡皮擦实现系统,其包括:
[0045] 像素点索引列表建立模块,用于建立像素点索引列表;
[0046] 原始点集采集和插值模块,用于通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;
[0047] 待删除的顶层笔画点信息寻找模块,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;
[0048] 删除模块,根据删除笔段,对该笔画进行局部区域的删除;
[0049] 重构模块,对删除后的笔画进行重构,更新像素索引列表,重绘删除后的笔画;
[0050] 用户绘图时,当结束一个笔画的绘制时,原始点集采集和插值模块执行动作;
[0051] 用户使用橡皮擦擦除时,待删除的顶层笔画点信息寻找模块、删除模块和重构模块重复执行动作,直到用户停止橡皮擦擦除。
[0052] 作为本发明的进一步改进,所述像素点索引列表建立模块包括:
[0053] 实际像素获取模块,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;
[0054] 像素点索引列表初始化模块,开辟绘一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;
[0055] 笔画列表新建模块,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表。
[0056] 作为本发明的进一步改进,所述原始点集采集和插值模块包括:
[0057] 赋值模块,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;
[0058] 像素点索引计算模块,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;进一步的,计算方法为:像素索引=点x方向坐标+点y方向坐标×绘图界面像素点宽;
[0059] 插值点信息存取模块,根据计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中;其中,所述新增的插值平滑笔画中的点信息包括该点所在的笔画索引、该点是否为原始采集点、该点在新增的插值平滑笔画中的位置索引。
[0060] 作为本发明的进一步改进,待删除的顶层笔画点信息寻找模块包括:
[0061] 计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;
[0062] 根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;
[0063] 取出删除字典中的key值,即为笔画索引,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;
[0064] 对得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到一段一段连续删除的点信息,即为删除笔段。
[0065] 作为本发明的进一步改进,所述删除模块对该笔画进行局部区域的删除的区域包括用户删除笔画的前端区域、用户删除笔画的中间区域、用户删除笔画的尾部区域或用户删除整个笔画。
[0066] 作为本发明的进一步改进,所述重构模块根据原始笔画被删除的情况不同,执行如下不同的操作:
[0067] 如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;
[0068] 如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;
[0069] 如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。
[0070] 本发明公开了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如上任一项所述的可擦除顶层局部区域笔画的橡皮擦实现方法。
[0071] 本发明公开了一种装置,其包括相连的处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序,以执行如上任一项所述的可擦除顶层局部区域笔画的橡皮擦实现方法。
[0072] 与现有技术相比,本发明的有益效果为:
[0073] 采用本发明的技术方案,根据越长时间绘画的信息越确定的理论,利用构建像素点索引列表的方式,只删除最上层笔画中被橡皮擦覆盖的区域,当用户擦除同一区域时,会逐渐往下一层擦除。将该技术应用于图像编辑、电子白板擦除中,既能不限制用户擦除的区域,也能保护用户之前绘画的信息,提高用户绘画编辑效率,改善用户的绘画擦除体验。

附图说明

[0074] 图1为本发明实施例一种可擦除顶层局部区域笔画的橡皮擦实现方法的流程图。
[0075] 图2为本发明实施例中建立像素索引列表的示例图。
[0076] 图3为本发明实施例中寻找被橡皮擦覆盖的顶层笔画示例图;其中(a)为绘图和橡皮擦的覆盖区域的示意图,(b)为计算橡皮擦的覆盖区域的示意图,(c)为取出最顶层的笔画段,对原始笔画进行删除的示意图。
[0077] 图4为本发明实施例中用户对笔画进行删除的情况示例图;其中(a)为删除笔画的前端区域的示意图,(b)为删除笔画的后端区域的示意图,(c)为删除笔画的中间区域的示意图,(d)为删除整个笔画的示意图。
[0078] 图5为本发明实施例中用户对笔画进行删除的结果示例图;其中(a)为删除最顶层的蓝色笔画的示意图,(b)为删除绿色笔画区域的示意图,(c)为删除蓝色笔画区域的示意图。

具体实施方式

[0079] 下面对本发明的较优的实施例作进一步的详细说明。
[0080] 如图1所示,一种可擦除顶层局部区域笔画的橡皮擦实现方法,其包括以下步骤:
[0081] 步骤S1,建立像素点索引列表;具体而言,步骤S1包括如下子步骤:
[0082] 子步骤S11,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;
[0083] 子步骤S12,开辟绘一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;
[0084] 子步骤S13,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表。
[0085] 步骤S2,通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;具体而言,步骤S2包括:
[0086] 子步骤S21,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;
[0087] 子步骤S22,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;其中,计算方法为:像素索引=点x方向坐标+点y方向坐标×绘图界面像素点宽;
[0088] 子步骤S23,根据步骤S22中计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中;其中,所述新增的插值平滑笔画中的点信息包括该点所在的笔画索引、该点是否为原始采集点、该点在新增的插值平滑笔画中的位置索引。
[0089] 步骤S3,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;具体而言,步骤S3包括如下步骤:
[0090] 子步骤S31,计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;
[0091] 子步骤S32,根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;
[0092] 子步骤S33,取出删除字典中的key值,即为笔画索引,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;
[0093] 子步骤S34,对由步骤S33得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到一段一段连续删除的点信息,即为删除笔段。
[0094] 步骤S4,根据删除笔段,对该笔画进行局部区域的删除;该步骤中,对该笔画进行局部区域的删除的区域包括如下四种情况:用户删除笔画的前端区域、用户删除笔画的中间区域、用户删除笔画的尾部区域或用户删除整个笔画。
[0095] 步骤S5,对删除后的笔画进行重构,更新像素索引列表,重绘删除后的笔画;该步骤中,用户在进行笔画删除后,剩下的笔画包括三种情况,根据这三种情况所述对删除后的笔画进行重构分别为:
[0096] 如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;
[0097] 如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;
[0098] 如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。
[0099] 用户绘图时,当结束一个笔画的绘制时,执行上述步骤S2;
[0100] 用户使用橡皮擦擦除时,重复步骤S3到步骤S5,直到用户停止橡皮擦擦除。
[0101] 采用上述方法在绘图中,利用绘图界面的像素点高和宽,建立像素点索引列表。如图2所示,通过绘图界面中点的坐标来计算像素索引,若存在笔画经过该点,则在对应的像素索引区域存储三个元素,分别为经过该点的笔画索引、该点是否为原始采集点和该点在笔画中的位置索引;若不存在笔画经过该点,则对应的像素索引区域存储为空。
[0102] 具体为寻找被橡皮擦覆盖的顶层笔画过程如图3所示,用户先绘制红色笔画①,再绘制蓝色笔画②,虚线框为橡皮擦的覆盖区域,如图3(a)所示。图3(b)中计算橡皮擦的覆盖区域,对覆盖区域中的点进行像素点索引列表查询,判断是否为覆盖的笔画点。点1为橡皮擦覆盖区域中的点,根据点1的坐标计算像素点索引index1,在像素点索引列表中查询index1中的值,发现为空,说明没有笔画经过点1。同样的方式对点2进行查询,发现在像素点索引列表中index2有值,说明有笔画经过该点。以此类似,寻找出被橡皮擦覆盖的笔画区域,并且进行索引排序和分段,得到笔画段1和笔画段2。最后对笔画段进行层排序,取出最顶层的笔画段,对原始笔画进行删除,如图3(c)所示。
[0103] 如图4所示,具体为用户对笔画进行删除的几种情况:用户通过点击或移动橡皮擦进行笔画擦除,图中大圆点表示笔画的原始采集点,小圆点表示平滑插值点,虚线区域为要擦除的区域。图4(a)中用户删除笔画的前端区域,删除后笔画剩下区域B部分;图4(b)中用户删除笔画的后端区域,删除后笔画剩下区域A部分;图4(c)中用户删除笔画的中间区域,删除后笔画被分为两部分;图4(d)中用户删除整个笔画。
[0104] 如图4所示,具体为用户对笔画进行删除的实际效果图:用户以不同的顺序绘出3个不同颜色的笔画,最先画的是红色笔画①,接着是蓝色笔画②,最后是绿色笔画③,虚线框内为删除的区域。图5(a)中用户删除红色笔画和蓝色笔画的交界处,因为用户先绘制红色笔画,本发明基于越长时间的信息越准确的理论,所以删除时,先删除最顶层的蓝色笔画。图5(b)中用户删除蓝色笔画和绿色笔画的交界处,因为绿色笔画最后绘制,所以删除时先删除绿色笔画区域。图5(c)中用户继续删除图5(b)中的删除区域,则橡皮擦会往下一层删除,删除蓝色笔画区域。
[0105] 采用本发明实施例的一种可擦除顶层局部区域笔画的橡皮擦实现方法,用户可以在任何触摸屏设备的绘图界面进行绘画,使用橡皮擦擦除任意区域笔画。用户每次点击或移动橡皮擦,都只擦除顶层笔画中被橡皮擦覆盖的区域。当用户擦除同一区域时,会逐渐往下一层擦除。它解决了白板式擦除中擦除橡皮擦覆盖区域的所有笔画信息,撤销删除中删除整个笔画,以及PS删除中复杂分层管理等问题。
[0106] 本发明实施例还公开了一种可擦除顶层局部区域笔画的橡皮擦实现系统,其包括:
[0107] 像素点索引列表建立模块,用于建立像素点索引列表;
[0108] 原始点集采集和插值模块,用于通过触摸屏采集用户绘图过程的原始点集,然后对原始笔画进行像素点间的插值;
[0109] 待删除的顶层笔画点信息寻找模块,计算橡皮擦的覆盖区域,根据橡皮擦的覆盖区域,寻找需要删除的顶层笔画点信息;
[0110] 删除模块,根据删除笔段,对该笔画进行局部区域的删除;所述删除模块对该笔画进行局部区域的删除的区域包括用户删除笔画的前端区域、用户删除笔画的中间区域、用户删除笔画的尾部区域或用户删除整个笔画。
[0111] 重构模块,对删除后的笔画进行重构,更新像素索引列表,重绘删除后的笔画;
[0112] 用户绘图时,当结束一个笔画的绘制时,原始点集采集和插值模块执行动作;
[0113] 用户使用橡皮擦擦除时,待删除的顶层笔画点信息寻找模块、删除模块和重构模块重复执行动作,直到用户停止橡皮擦擦除。
[0114] 具体而言,所述像素点索引列表建立模块包括:
[0115] 实际像素获取模块,根据绘图界面的分辨率,获取绘图界面的实际像素点宽和像素点高;
[0116] 像素点索引列表初始化模块,开辟绘一个一维数组空间作为像素点索引列表,空间大小等于绘图界面总像素点大小,初始化像素点索引列表;
[0117] 笔画列表新建模块,新建两个笔画列表,分别为原始采集笔画列表和插值平滑笔画列表。
[0118] 进一步优选的,所述原始点集采集和插值模块包括:
[0119] 赋值模块,当用户新增加绘图笔画时,将存储了原始采集点的新增加笔画赋予最大层信息,并存入原始采集笔画列表中;对新增加笔画中相邻的两个原始点,进行一个像素一个像素的插值,并将存储了原始点与插值点的插值平滑笔画赋予最大层信息后,存入插值平滑笔画列表中,并且将最大层信息按自然数向上叠加;
[0120] 像素点索引计算模块,根据新增的插值平滑笔画中的点坐标信息,计算对应的像素点索引;进一步的,计算方法为:像素索引=点x方向坐标+点y方向坐标×绘图界面像素点宽;
[0121] 插值点信息存取模块,根据计算的像素点索引,将新增的插值平滑笔画中的点信息存入对应的索引位置中;其中,所述新增的插值平滑笔画中的点信息包括该点所在的笔画索引、该点是否为原始采集点、该点在新增的插值平滑笔画中的位置索引。
[0122] 进一步优选的,待删除的顶层笔画点信息寻找模块包括:
[0123] 计算橡皮擦覆盖区域的像素点坐标,存入橡皮擦覆盖区域点列表中;
[0124] 根据橡皮擦覆盖区域点列表中的点坐标,计算对应的像素点索引,然后在像素点索引列表中,获取该索引位置的信息;若信息为空,则说明该点不是绘图笔画点;若信息不为空,则取出该索引位置的最后一个点信息,并将该点所在的笔画位置索引作为key值,该点是否为原始采集点和该点在新增的插值平滑笔画中的位置索引作为value值,存入删除字典中;
[0125] 取出删除字典中的key值,即为笔画索引,根据笔画索引读取该笔画的层信息;接着对层信息进行排序,获得最顶层的笔画索引,在删除字典中取出key值为该笔画索引的value值,即为需要删除的笔画点信息;
[0126] 对得到的需要删除的笔画点信息按点在新增的插值平滑笔画中的位置索引进行排序,然后将不连续的点信息进行分段,得到一段一段连续删除的点信息,即为删除笔段。
[0127] 进一步优选的,所述重构模块根据原始笔画被删除的情况不同,执行如下不同的操作:
[0128] 如果用户进行笔画删除后,原始笔画被完全删除,则在该笔画索引中放入一个空的笔画进去,这样像素点索引列表中的其他笔画点的笔画索引不变,只需更新删除的笔画点信息即可;
[0129] 如果用户进行笔画删除后,原始笔画被删除一部分,还剩下一部分连续笔画,则将剩下的笔画替换被删除的原始笔画;
[0130] 如果用户进行笔画删除后,原始笔画被分为多个部分,则按照用户绘制原始笔画的顺序对这些部分进行排序,将第一部分笔画在笔画索引位置替换被删除的原始笔画,将其余的部分笔画依次添加到笔画索引列表的最后;这些部分笔画的笔画索引信息不一样,但是所在的笔画层信息是相同的。
[0131] 本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如上所述的可擦除顶层局部区域笔画的橡皮擦实现方法。
[0132] 本发明实施例公开了一种装置,其包括相连的处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序,以执行如上所述的可擦除顶层局部区域笔画的橡皮擦实现方法。
[0133] 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。