掌桥专利:专业的专利平台
掌桥专利
首页

绘制多边形的方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 10:19:37


绘制多边形的方法、装置、电子设备及存储介质

技术领域

本发明实施例涉及计算机领域,特别涉及一种绘制多边形的方法、装置、电子设备及存储介质。

背景技术

随着科学技术的进步,绘图方式也发生了巨大的改变。原始手工绘图方式是工作人员利用绘图工具,如铅笔、绘图尺、图纸等进行手工绘图,此种绘图方式存在操作繁琐,工作量大,出错不易修改、工作效率低等问题。随着计算机绘图技术的发展,例如,CAD、CAXA、SolidWork等计算机绘图软件得到广泛应用,相比手工绘图方式,计算机绘图精度高、易修改、极大提高了工作效率。目前的绘制软件容量较大,需要安装在电脑中,导致不能随时绘图,另外,以上的绘图软件需要用户具有相关的软件绘图知识,绘图人员需要经过专业的培训才能进行绘图,提高了绘图成本。

然而,随着智能移动终端的普及,触控技术不断的发展,基于苹果系统和安卓系统的触控平面绘制图方式可以改变以计算机设备为主的平面绘图方式,但是基于触控方式的平面绘图方式只能满足基本的点、线、面和圆弧的绘制,无法满足对复杂多边形的绘制。

发明内容

本发明实施方式的目的在于提供一种绘制多边形的方法、装置、电子设备及存储介质,能够快速、便捷地绘制多边形。

为解决上述技术问题,本发明的实施方式提供了一种绘制多边形的方法,包括:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,所述网格画布用于绘制图形;根据所述轨迹点各自的所述坐标信息,获取所述轨迹点所属的网格;根据所述轨迹点所属的网格,生成目标多边形的边界点;根据所述目标多边形的边界点,绘制所述目标多边形。

本发明的实施方式还提供了一种绘制多边形的装置,包括:第一获取模块、第二获取模块、生成模块以及绘制模块;所述第一获取模块用于获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,所述网格画布用于绘制图形;所述第二获取模块用于根据所述轨迹点各自的所述坐标信息,获取所述轨迹点所属的网格;所述生成模块用于根据所述轨迹点所属的网格,生成目标多边形的边界点;所述绘制模块用于根据所述目标多边形的边界点,绘制所述目标多边形。

本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的绘制多边形的方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的绘制多边形的方法。

在本申请实施方式中,通过获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,获取轨迹点所属的网格,利用网格画布可以快速确定出目标多边形的边界点,根据目标多边形的边界点,绘制该目标多边形;网格画布为网格状,网格的顶点之间的线条为直线,在确定出边界点后,通过连接边界点即可快速的绘制出多边形,由于只需通过手指移动的轨迹即可快速绘制目标多边形,使得绘制多边形的速度快;在使用便携式终端时,通过手指的移动,绘制多边形,无需要求使用者具有绘图的专业知识,提高了绘制多边形的使用场景。

另外,在所述根据所述目标多边形的边界点,绘制所述目标多边形之后,所述方法还包括:绘制与所述目标多边形相交的第一多边形;获取所述第一多边形与所述目标多边形相互重叠的第一重叠网格;从所述第一多边形与所述目标多边形合并后包含的网格中删除所述第一重叠网格,生成新的目标多边形所包含的网格;根据新的所述目标多边形所包含的网格,更新所述目标多边形的边界点并绘制。目前移动终端无法对已绘制的多边形进行编辑,如与其他多边形的合并操作,本示例中通过绘制的第一多变形,获取第一多边形和目标多边形之间重叠的网格,生成第一多变形和目标多变形拼接后的新的多边形,快速实现多边形的合并并绘制,从而实现了对已绘制的多边形的编辑。

另外,在所述根据所述目标多边形的边界点,绘制所述目标多边形之后,所述方法还包括:绘制与所述目标多边形相交的第二多边形;获取所述第二多边形与所述目标多边形相互重叠的第二重叠网格;从所述目标多边形包含的网格中删除所述第二重叠网格,生成新的目标多边形所包含的网格;根据新的所述目标多边形所包含的网格,更新所述目标多边形的边界点并绘制。目前移动终端无法对已绘制的多边形进行裁剪的操作,本示例中通过与目标多边形相交的第二多边形,可以从该目标多变形中删除重叠的网格,快速实现对目标多边形的裁剪。

另外,根据所述轨迹点所属的网格,生成目标多边形的边界点,包括:获取每个所述轨迹点所属的网格的四个顶点;针对每个所述顶点进行如下处理:判断所述顶点所属的网格的个数是否等于4个,若不是,则将所述顶点作为所述目标多边形的边界点;若是,则继续对下一个顶点进行处理,直至判断完所有顶点。由于网格画布中的网格具有四个顶点,位于多边形内部的点将同时属于4个多变形的网格,基于此,可以准确且快速地筛除属于多边形内部的点,从而确定出边界点。

另外,根据所述轨迹点所属的网格,生成目标多边形的边界点,包括:若检测到所述轨迹点形成的连线为直线,则确定所述目标多边形为矩形;获取手指移动的移动方向;根据所述移动方向、所述直线两端所属的网格以及预设的对应关系,获取所述矩形在斜角线上的两个顶点作为的所述矩形中斜角线上的边界点,所述对应关系为所述移动方向与所述矩形的对角线上的两个顶点之间的关系;根据所述矩形中斜角线上的边界点,生成所述矩形其余的边界点。绘制矩形时,通过手指移动的方向、绘制的直线两端所属网格及预设的对应关系,可以根据预设的对应关系直接确定出待绘制矩形在斜对角线上的边界点,无需对每个轨迹点所属的网格进行判断,提高了绘制矩形的速度。

另外,根据所述目标多边形的边界点,绘制所述目标多边形,包括:将所述目标多边形的边界点按照预设方向进行排序,获取排序结果;按照所述排序结果的顺序连接各个边界点,形成所述目标多边形。在确定边界点后,可以对边界点进行排序,以便可以快速准确地绘制出目标多边形。

另外,将所述目标多边形的边界点按照预设方向进行排序,获取排序结果,包括:获取当前待连接的边界点,其中,初始待连接的边界点是根据查找方向确定;按照预设的方向对距离当前待连接的边界点单位网格距离的所述轨迹点进行如下处理:判断所述轨迹点是否为所述目标多边形的边界点,若是且位于所述轨迹点与所述当前待连接的边界点中间位置的点在所述目标多边形的路径上,则将所述轨迹点作为下一个待连接的边界点,并返回获取当前待连接的边界点,直至查询完所有的边界点,得到所述排序结果;否则,继续检测下一个距离当前待连接的所述边界点单位网格距离的轨迹点。对目标多变形的边界点排序的方式,是通过当前的边界点,按照预设的查找方向依次判断相邻顶点是否属于边界点,进而查找出下一个边界点,该排序的方式简单,准确。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式提供的一种绘制多边形的方法的流程图;

图2是根据本发明第二实施方式提供的一种绘制多边形的方法的流程图;

图3是根据本发明第二实施方式提供的一种绘制多边形的方法中网格画布的示意图;

图4是根据本发明第二实施方式提供的一种绘制多边形的方法中多边形的示意图;

图5是根据本发明第二实施方式提供的一种绘制多边形的方法中手指移动的轨迹点示意图;

图6是根据本发明第二实施方式提供的一种绘制多边形的方法中手指移动的轨迹点示意图;

图7是根据本发明第二实施方式提供的一种绘制多边形的方法中手指移动的轨迹点示意图;

图8是根据本发明第二实施方式提供的一种绘制多边形的方法中边界点的示意图;

图9是根据本发明第二实施方式提供的一种绘制多边形的方法中排序的示意图;

图10是根据本发明第二实施方式提供的一种绘制多边形的方法中排序结果的示意图;

图11是根据本发明第二实施方式提供的一种绘制多边形的方法中目标多边形的示意图;

图12是根据本发明第三实施方式提供的一种绘制多边形的方法的流程图;

图13是根据本发明第三实施方式提供的一种绘制多边形的方法中移动方向的示意图;

图14是根据本发明第四实施方式提供的一种绘制多边形的方法的流程图;

图15是根据本发明第四实施方式提供的一种绘制多边形的方法中目标多边形的示意图;

图16是根据本发明第四实施方式提供的一种绘制多边形的方法中目标多边形与第一多边形相交的示意图;

图17是根据本发明第四实施方式提供的一种绘制多边形的方法中目标多边形与第一多边形合并后的示意图;

图18是根据本发明第四实施方式提供的一种绘制多边形的方法中新的目标多边形的边界点的示意图;

图19是根据本发明第四实施方式提供的一种绘制多边形的方法中新的目标多边形的示意图;

图20是根据本发明第五实施方式提供的一种绘制多边形的方法的流程图;

图21是根据本发明第五实施方式提供的一种绘制多边形的方法中目标多边形和第二多边形相交的示意图;

图22是根据本发明第五实施方式提供的一种绘制多边形的方法中对目标多边形裁剪后的示意图;

图23是根据本发明第五实施方式提供的一种绘制多边形的方法中新的目标多边形的边界点的示意图;

图24是根据本发明第五实施方式提供的一种绘制多边形的方法中新的目标多边形的边界点的排序结果的示意图;

图25是根据本发明第五实施方式提供的一种绘制多边形的方法中新的目标多边形的示意图;

图26是根据本发明第六实施方式提供的一种绘制多边形的装置的结构框图示意图;

图27是根据本发明第七实施方式提供的一种电子设备的结构框图示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

目前通常采用计算机进行图像的绘制,绘图人员必须使用台式机或者笔记本电脑进行绘图,如果绘图人员需要到现场进行绘制,设备便携性差,降低工作方式的灵活性和便捷性。安装在计算机上的绘图软件操作难度大,学习周期长,降低工作效率,例如,CAD、CAXA、Solid Works或UG等绘图软件绘图方式复杂、不易操作、学习周期长,需要专业的绘图人员进行绘制,增加绘图难度,降低工作效率。

基于安卓系统或苹果系统的智能移动终端上的绘图软件,仅能实现点、线、曲线的绘制,无法快速进行多变形的绘制,例如,绘制多边形需要绘制人员的手指保持稳定,以绘制出多边形的每条边,提高了绘制人员绘制多边形的难度。

本发明的第一实施方式涉及一种绘制多边形的方法,其流程如图1所示,包括:

步骤101:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,网格画布包括均匀分布的四边形网格,网格画布用于绘制图形。

步骤102:根据轨迹点各自的坐标信息,获取轨迹点所属的网格。

步骤103:根据轨迹点所属的网格,生成目标多边形的边界点。

步骤104:根据目标多边形的边界点,绘制目标多边形。

在本申请实施方式中,通过获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,获取轨迹点所属的网格,利用网格画布可以快速确定出目标多边形的边界点,根据目标多边形的边界点,绘制该目标多边形;网格画布为网格状,网格的顶点之间的线条为直线,在确定出边界点后,通过连接边界点即可快速的绘制出多边形,由于只需通过手指移动的轨迹即可快速绘制目标多边形,使得绘制多边形的速度快;在使用便携式终端时,通过手指的移动,绘制多边形,无需要求使用者具有绘图的专业知识,提高了绘制多边形的使用场景。

本发明的第二实施方式涉及一种绘制多边形的方法。第二实施方式是对第一实施方式中步骤101至步骤104的具体介绍,该绘制多边形的方法应用于具有触控功能的移动终端,例如,手机、平板电脑等设备。该绘制多边形的方法的具体流程如图2所示:

步骤201:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,网格画布包括均匀分布的四边形网格,该网格画布用于绘制图形。

具体地,网格画布包括均匀分布的方形网格,该网格画布用于绘制图形。下面以苹果系统为例,介绍构建网格画布的方式:

构建一张画布,该画布可以继承于UIScreenView。画布的尺寸可以根据绘制需求设置,也可以小于屏幕尺寸,例如,在屏幕指定区域内绘制图像,该指定区域的大小可以作为画布尺寸。画布的尺寸可以大于屏幕尺寸,例如,当画布尺寸超过屏幕尺寸时,用户可以对画布进行上下左右移动,增加画布可绘制区域。可以根据绘制需求设置网格的形状,本示例中为了快速绘制,网格的形状为正方形;根据多边形绘制精度,确定划分画布的网格大小,精度越高,划分的网格的尺寸越小。为了方便标记,将画布设定为正方形,长度和宽度均标记为L,将网格长度和宽度均标记为l,其中L÷l=m为整数。按照设定的网格大小对画布进行划分,形成网格画布。如图3所示的网格画布,根据终端屏幕坐标点标记方法,可以将网格画布左上方标记为(0,0),将网格画布右下方标记为(L,L),那么如图3所示的第j行第i列的网格的左上角顶点的坐标表示为(l×i,l×j),其中,表示i表示第i列,j表示第j行,且0≤i≤m,0≤j≤m。

本实施方式中,为了便于后续的理解,先介绍多边形的标记方式,如图4所示的多边形,该多边形的尺寸信息以frame表示,该frame值为(x,y,w,h),其中,p

可以理解的是,为了便于用户在网格画布中间绘制编辑图形,可以将该网格画布移动于终端屏幕的中间位置。

触控屏幕可以实时记录手指在屏幕上移动的轨迹点,例如,在苹果系统中,可以利用UIPanGestureRecognizer方法监听手指触控屏幕状态,若用户手指移动的轨迹如图5所示,该方法可以记录手指触摸屏幕起点P

步骤202:根据轨迹点各自的坐标信息,获取轨迹点所属的网格。

根据记录的手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,可以获取轨迹点所属的网格。可以根据轨迹点的坐标和网格画布中每个顶点的坐标,确定出该轨迹点所属的网格。

需要说明的是,为了便于后续图形的绘制,可以将每个轨迹点所属网格的坐标转换为相对该网格画布路径。

例如,如图6所示,获取起点P

步骤203:获取每个轨迹点所属的网格的四个顶点。

具体地,为了进一步便于绘制目标多边形,需要进行多次坐标转换。本示例中,可以根据每个轨迹点相对网格画布路径,获得该目标多边形的尺寸,基于该目标多边形的尺寸,将每个轨迹点所属的网格的各顶点相对该目标多边形的坐标。

例如,目标多边形的尺寸包括该目标多边形覆盖的长度和宽度,如图7所示,根据该轨迹的起点P

步骤204:针对每个顶点进行如下处理:判断顶点所属的网格的个数是否等于4个,若不是,则执行步骤205将顶点作为目标多边形的边界点;若是,则继续对下一个顶点进行处理,直至判断完所有顶点。

具体地,如图8所示,根据手指移动的轨迹点,待绘制的目标多边形如图8所示,空心圆表示边界点,实心点表示目标多边形的内部点;由图8所示的方形网格可知,位于多边形内部的顶点必然属于4个不同的网格内,基于此原理,针对顶点数组中的每个顶点进行如下判断,判断该顶点所属网格的个数是否等于4个,若是,该顶点为目标多边形内的点,并继续对顶点数组中的下一个顶点进行判断,直至判断完该顶点数组中的所有顶点,若不是,则该顶点为该目标多边形的边界点。

步骤205:将该顶点作为目标多边形的边界点。

具体地,为了便于后续绘制多边形,可以将获取的边界点存入边界点数组中。

步骤206:将目标多边形的边界点按照预设方向进行排序,获取排序结果。

在一个例子中,获取当前待连接的边界点,其中,初始待连接的边界点是根据查找方向确定;按照预设的方向对距离当前待连接的边界点单位网格距离的网格顶点进行如下处理:判断网格顶点是否为目标多边形的边界点,若是且位于网格顶点与当前待连接的边界点中间位置的点在目标多边形的路径上,则将网格顶点作为下一个待连接的边界点,并返回获取当前待连接的边界点,直至查询完所有的边界点,得到排序结果;否则,继续检测下一个距离当前待连接的边界点单位网格距离的网格顶点。

具体地,可以根据查找方向从边界点数组中查找初始待连接边界点;预设方向可以是顺时针方向,那么查找方向依次为上、右、下、左。假设初始的查找方向为目标多边形的左方向,根据该查找方向,可以确定目标多边形的左方坐标在x方向上最小,同时在y方向上最小,基于此,即可确定出初始待连接的边界点的坐标为(x

在确定了初始待连接的边界点后,按照预设的方向对距离当前待连接的边界点单位网格距离的网格顶点进行处理;其中,网格顶点是指每个网格中的顶点。单位网格距离是指每个网格的长度或宽度。

下面结合附图9,以一个具体的例子介绍排序的过程:

假设P

本示例中,假设查找方向为目标多边形的左上方向,预设方向为顺时针方向,由于网格是规则的方向,查找方向依次为上、右、下、左。已知当前待连接的边界点为P

需要说明的是,该目标多边形的路径可以通过系统获取该目标多边形包含的每个网格的四个顶点相对该目标多边形的路径。

本示例中,初始待连接的边界点在目标多边形最左侧,所以从初始待连接的边界点查找第二个待连接的边界点时,设置dir默认值为2,只需按上、右、下、左顺序遍历非方向点坐标,查找第二个待连接的边界点。获取下一个待连接的边界点后,记录查找下一个待连接的边界的查找方向,从多边形边界点数组中删除查到到的待连接的边界点,并将当前查找到的待连接边界点按照查找顺序存入排序数组中,当边界点数组中剩余边界点个数不为0,则继续遍历剩余边界点获取下一个待连接的边界点,依然按上、右、下、左的查找方向遍历对应方向点;可以理解的是,若查找上一个待连接的边界点的查找方向dir=2,那么在从预设方向中删除非dir的方向,即删除dir=-2的方向。例如,通过P

当检测到边界点数组中的边界点个数为0后,停止排序,得到排序数组,该排序数组中的边界点按照排序顺序保存。

步骤207:按照排序结果的顺序连接各个边界点,形成目标多边形。

按照该排序顺序连接各个边界点,形成目标多边形。如图10所示,按照排序结果连接各个边界点,形成如图11所示的目标多边形。

需要说明的是,本示例中涉及多次路径转化,网格画布中的每个顶点相对网格画布的坐标均已知;故获取边界点相对于网格画布的坐标信息后,即可获知边界点相对与屏幕的坐标。

本发明的第三实施方式涉及一种绘制多边形的方法。本实施方式提供了另一种生成目标多边形的边界的方式,其绘制多边形的方法的流程如图12所示:

步骤301:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息。

该步骤与第一实施方式中的步骤101或第二实施方式中步骤201大致相同,此处将不再赘述。

步骤302:根据轨迹点各自的坐标信息,获取轨迹点所属的网格。

该步骤与第一实施方式中的步骤102或第二实施方式中步骤202大致相同,此处将不再赘述。

步骤303:若检测到轨迹点形成的连线为直线,则确定目标多边形为矩形。

具体地,可以通过相邻轨迹点形成的连线之间的夹角是否为180度或0度,若是,则确定轨迹点形成的连线为直线。若检测到轨迹点形成的连线为直线,则确定目标多边形为矩形。

步骤304:获取手指移动的移动方向。

手指移动的移动方向可以根据起点的坐标和终点的坐标确定。如图13所示,系统可以监听手指触控屏幕的状态,获取手指触控起点相对网格画布的坐标,即箭头开始点记为p

步骤305:根据移动方向、直线两端所属的网格以及预设的对应关系,获取矩形在斜角线上的两个顶点作为的矩形中斜角线上的边界点,对应关系为移动方向与矩形的对角线上的两个顶点之间的关系。

具体地,可以预先设置移动方向与矩形的对角顶点之间的关系,例如,对应关系可以是若移动方向为左下方时,则对应将起点所属网格的右上方顶点以及终点所属网格的左下方顶点作为该矩形斜角线上的两个边界点,如图13中的第一个矩形所示,同理,若移动方向为左上方,则对应将起点所属网格的右下方顶点以及终点所属网格的左上方顶点作为该矩形斜角线上的两个边界点,如图13中的第二个矩形所示;若移动方向为右下方,则对应将起点所属网格的左上方顶点以及终点所属网格的右下方顶点作为该矩形斜角线上的两个边界点,如图13中的第三个矩形所示;若移动方向为右上方,则对应将起点所属网格的左下方顶点以及终点所属网格的右上方顶点作为该矩形斜角线上的两个边界点,如图13中的第四个矩形所示。

下面结合附图13所示,介绍获取边界点的方式:

根据起点的坐标计算该起点所属的网格,获取该起点所属网格的四个顶点的坐标,可以按照顺时针方向标记该起点所属的网格的四个顶点,分别记为:p

步骤306:根据矩形中斜角线上的边界点,生成矩形其余的边界点。

根据矩形中斜角线上的边界点,可以获知该矩形的长度和宽度,进而根据矩形的形状的特点,确定出该矩形其余的边界点。

步骤307:根据目标多边形的边界点,绘制目标多边形。

具体地,根据矩形左上方顶点的坐标、矩形宽度及高度,利用系统中绘制矩形的方法,寄了快速绘制矩形,例如,在苹果系统中,可以利用UIBezierPath类中的矩形绘制方式绘制矩形。

值得一提的是,绘制矩形时,通过手指的直线移动,即可快速获取待绘制矩形的尺寸信息,提高获取矩形尺寸信息的速度,调用已有的绘图接口绘制矩形,由于无需采用第二实施方式中对边界点排序的方式绘制,提高了绘制矩形的速度。

本发明的第四实施方式涉及一种绘制多边形的方法,本实施方式是对第三实施方式的改进,主要改进之处在于,本实施方式中:在绘制目标多边形之后,绘制与该目标多边形相交的第一多边形,并得到第一多边形和目标多边形拼接后形成的新的目标多边形。其流程如14图所示:

步骤401:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息。

步骤402:根据轨迹点各自的坐标信息,获取轨迹点所属的网格。

步骤403:根据轨迹点所属的网格,生成目标多边形的边界点。

步骤404:根据目标多边形的边界点,绘制目标多边形。

绘制目标多边形的步骤401至步骤404可以采用第一实施方式中的步骤101至步骤104、或者步骤201至步骤207,或者步骤301至步骤307的方式。

步骤405:绘制与目标多边形相交的第一多边形。

本示例中,第一多边形可以为绘制的任意多边形,该第一多边形的绘制方式可以采用如步骤401至步骤404实现。绘制第一多边形的过程不再进行赘述。

目标多边形记为polygon1,记录目标多边形的frame(x

本示例中第一多边形为矩形为例,获取该矩形的frame值和该矩形的每个网格相对目标多边形的路径数组rectCellPathArray。矩形的frame记为(x

需要说明的是,可以通过获取用户手指在屏幕移动的轨迹点,绘制多边形;在执行步骤405之前,检测目标多边形是否与绘制的多边形相交,若目标多边形与绘制的多边形存在缝隙,则确定绘制的多边形与目标多边形不相交,则结束当前的绘制流程;若不存在缝隙,则确定绘制的多边形与该目标多边形相交,并将该多边形作为第一多边形。

步骤406:获取第一多边形与目标多边形相互重叠的第一重叠网格。

具体地,目标多边形记为polygon1,绘制的第一多边形记为Rect1,合并后的目标多边形记为polygon。根据第一多边形的frame(x

遍历合并后的目标多边形的路径数组polygonCellPathArray,获取该路径数组polygonCellPathArray中重复的网格作为第一重叠网格。

步骤407:从第一多边形与目标多边形合并后包含的网格中删除第一重叠网格,生成新的目标多边形所包含的网格。

具体地,为了确保合并后的目标多边形内网格的唯一性,删除第一重叠网格,即可生成新的目标多边形所包含的网格。

需要说明的是,在删除了第一重叠网格后,获取新的目标多边形内所有网格相对该新的目标多边形的路径数组,例如,如图16所示,新的目标多边形内第一个网格(图16中标记为1’)相对新的目标多边形的路径为(0,0,l,l),新的目标多边形内第二个网格(图16中标记为2’)相对新的目标多边形的路径为(l,0,l,l),依次获取新的目标新的目标多边形内所有网格相对该新的目标多边形的路径,并更新该路径数组polygonCellPathArray。

步骤408:根据新的目标多边形所包含的网格,更新目标多边形的边界点并绘制。

重新确定该目标多边形的边界点,确定边界点的方式可以采用第二实施方式中的步骤203至步骤205的方式,得到如图17所示的边界点;可以采用如第二实施方式中步骤206的方式对边界点排序,根据排序结果重新绘制该目标多边形,如图18所示按照该边界点的排序方式连接各个边界点,得到如图19所示的新的目标多边形。

本实施方式提供的绘制多边形的方法,利用确定第一多边形与目标多边形相交的重叠网格,删除重叠网格,生成第一多边形和目标多边形合并后的新的目标多边形;通过合并两个多边形的方式实现对目标多边形的编辑,无需其他的复杂操作,提高了该绘制多边形的速度,同时,提高了用户在移动终端上绘制多边形的便捷性以及编辑绘制后的多边形的便捷性。

本发明的第五实施方式涉及一种绘制多边形的方法。实施方式是对目标多边形编辑的改进,主要改进之处在于,本实施方式中:在绘制目标多边形之后,绘制与该目标多边形相交的第二多边形,从目标多边形中删除与第二多边形重叠的第二重叠网格,生成新的目标多边形。其流程如图20所示:

步骤501:获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息。

步骤502:根据轨迹点各自的所述坐标信息,获取轨迹点所属的网格。

步骤503:根据轨迹点所属的网格,生成目标多边形的边界点。

步骤504:根据目标多边形的边界点,绘制目标多边形。

步骤505:绘制与目标多边形相交的第二多边形。

该步骤与第四实施方式中的步骤405大致相同;通过检测绘制的多边形是否与该目标多边形相交,若检测到与目标多边形相交,则判断是否检测到裁剪指示信息,若检测到裁剪指示信息,则将绘制的多边形作为第二多边形。其中,裁剪指示信息可以时用户通过终端的输入界面输入获得。

步骤506:获取第二多边形与目标多边形相互重叠的第二重叠网格。

具体地,目标多边形记为polygon2,记录该目标多边形的frame,以及该目标多边形每个网格相对网格画布的路径数组cellPathArray2,第二多边形记为polygon1,记录该第二多边形的frame,以及该第二多边形相对网格画布的路径数组cellPathArray1。可以查询cellPathArray1和cellPathArray2中相同路径的网格作为第二重叠网格,目标多边形以及该第二多边形如图21所示。

步骤507:从目标多边形包含的网格中删除第二重叠网格,生成新的目标多边形所包含的网格。

具体地,从该目标多边形每个网格相对网格画布的路径数组cellPathArray2中删除第二重叠网格。删除了第二重叠网格后的目标多边形记为polygon,裁剪后的目标多边形如图22所示。

步骤508:根据新的目标多边形所包含的网格,更新目标多边形的边界点并绘制。

具体地,将新的目标多边形所包含的网格,可以利用第二实施方式中的步骤203至步骤205,更新该新的目标多边形的边界点,筛除属于该新的目标多边形内部的点,如图23所示,实心点表示该新的目标多边形内部的点,空心圆表示该新的目标多边形的边界点。

在更新了该新的目标多边形的边界点之后,可以利用利用第二实施方式中的步骤206对边界点进行排序,按照排序结果绘制该新的目标多边形,如图24所示的箭头方向,依次连接边界点,形成新的目标多边形,新的目标多边形如图25所示。

本实施方式提供的绘制多边形的方法,通过绘制与目标多边形相交的第二多边形,确定出重叠的第二重叠网格,从目标多边形中删除第二重叠网格,生成新的目标多边形所包含的网格,更新该新的目标多边形的边界点并绘制,实现了对目标多边形的裁剪,该裁剪方式简单,无需用户使用复杂的命令,提高了裁剪目标多边形的速度;另外,第二多边形可以根据用户的手指移动的轨迹点绘制,进而使得可以以任意的形状对目标多边形进行裁剪,裁剪灵活。

需要说明的是,本申请中可以利用第四实施方式实现对目标多边形与第一多边形的拼接,之后还可以利用第五实施方式对拼接后的目标多边形进行裁剪。或者,可以先利用第五实施方式以第二多边形对目标多边形进行裁剪,之后再利用第四实施方式对裁剪后的目标多边形与第一多边形进行拼接,形成新的目标多边形。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第六实施方式涉及一种绘制多边形的装置,其结构框图如图26所示,包括:第一获取模块601、第二获取模块602、生成模块603以及绘制模块604;第一获取模块601用于获取手指在屏幕移动形成的轨迹点相对于网格画布的坐标信息,网格画布用于绘制图形;第二获取模块602用于根据轨迹点各自的坐标信息,获取轨迹点所属的网格;生成模块603用于根据轨迹点所属的网格,生成目标多边形的边界点;绘制模块604用于根据所述目标多边形的边界点,绘制目标多边形。

由于第二实施方式与本实施方式相互对应,因此本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。

本发明第七实施方式涉及一种电子设备,如图27所示,包括至少一个处理器701;以及,与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行上述的绘制多边形的方法。

其中,存储器702和处理器701采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器701和存储器702的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器701负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第八实施方式涉及一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的绘制多边形的方法。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

相关技术
  • 一种多边形绘制方法、装置、电子设备及可读存储介质
  • 绘制多边形的方法、装置、电子设备及存储介质
技术分类

06120112500348