CN111260750B - openFL绘制矢量图形的处理方法、装置及电子设备 - Google Patents
openFL绘制矢量图形的处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111260750B CN111260750B CN202010019745.8A CN202010019745A CN111260750B CN 111260750 B CN111260750 B CN 111260750B CN 202010019745 A CN202010019745 A CN 202010019745A CN 111260750 B CN111260750 B CN 111260750B
- Authority
- CN
- China
- Prior art keywords
- vector
- openfl
- vector diagram
- user
- graphic
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种openFL绘制矢量图形的处理方法、装置及电子设备,涉及计算机技术领域,该方法包括当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息;矢量图的图形信息包括构成矢量图的路径点;基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面;通过预设的开放图形库对矢量图的多个三角面进行渲染。本发明通过openFL代替flash进行绘制矢量图形的处理,有效提高了openFL在绘制矢量图形时的处理效率,同时减少了内存消耗。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种openFL绘制矢量图形的处理方法、装置及电子设备。
背景技术
在定制家居软件时,用户界面UI会用到圆角按钮和SVG控件,在家居软件的铺砖业务功能时用到的异型砖块和水刀切割图形砖块,这些复杂的2D绘制功能都依赖于flash矢量图形绘制接口。但是如果要在web上面脱离flash,改成html5或者WebAssembly,并且把平台扩充到桌面跨平台,需要通过openFL进行替代。但现有openFL使用的cario库渲染是通过CPU算法写入位图像素实现的,但用户来回缩放2D场景时需要重复申请新的位图并在新申请的位图上绘制图形,造成内存消耗较大的情况,另外,当位图很大或者绘制图形过多时,在进行绘制计算时会很耗时,从而在缩放操作时造成明显的卡顿。
发明内容
本发明的目的在于提供一种openFL绘制矢量图形的处理方法、装置及电子设备,以缓解了在运用openFL代替flash时,在绘制计算时耗时较大及内存占用较多的技术问题。
第一方面,实施例提供一种openFL绘制矢量图形的处理方法,方法包括:当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息;矢量图的图形信息包括构成矢量图的路径点;基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面;通过预设的开放图形库对矢量图的多个三角面进行渲染。
在可选的实施方式中,矢量图形存放于预设的开放图形库的Graphics类中;当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息的步骤,包括:当检测到用户触发的绘制命令时,通过openFL解析绘制命令,从而获取预设的开放图形库的Graphics类中的矢量图形信息。
在可选的实施方式中,矢量图包括曲线图形;方法还包括:基于三次贝塞尔曲线方程将曲线图形进行分割得到多段直线,以使openFL基于每段直线的端点对矢量图进行三角化。
在可选的实施方式中,矢量图包括凸多边形、凹多边形或自交多边形;基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面的步骤,包括:如果矢量图为凸多边形,基于凸多边形的路径点,通过openFL得到多个三角面;如果矢量图为凹多边形,基于耳切法进行三角化,通过openFL得到多个三角面;如果矢量图为自交多边形,按照奇偶规则或非零缠绕规则进行三角化,通过openFL得到多个三角面。
在可选的实施方式中,矢量图的图形信息还包括用户设置的矢量图的填充颜色;通过预设的开放图形库对矢量图的多个三角面进行渲染的步骤,包括:计算矢量图的每个三角面的顶点的UV坐标;判断用户是否触发变换指令,如果是,基于UV坐标和预设的变换矩阵按照预设的变换方式进行变换,得到变换后的三角面,并通过预设的开放图形库对变换后的三角面按照用户设置的矢量图的填充颜色进行渲染。
在可选的实施方式中,矢量图的图形信息还包括用户设置的矢量图中线条的线条宽度;方法还包括:基于矢量图中线条的第一端点及用户设置的矢量图中线条的线条宽度确定矢量图中线条的垂直向量,并基于路径点、垂直向量进行线条的绘制;线条绘制包括闭合曲线的线条绘制和非闭合曲线的线条绘制。
在可选的实施方式中,方法还包括:对矢量图进行缩放;对矢量图进行缩放的步骤,包括:确定缩放模式的类型;缩放模式的类型包括普通模式和线条不缩放模式;判断缩放模式是否为线条不缩放模式;如果是,在进行缩放操作时将线条宽度进行反向缩放。
在可选的实施方式中,方法还包括:在用户绘制前进行模板测试,如果当前模板值等于预先记录的模板值,则开始绘制;其中,预先记录的模板值包括将用户绘制的当前图形作为蒙版时记录的模板值。
第二方面,实施例提供一种openFL绘制矢量图形的处理装置,装置包括:解析模块,用于当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息;矢量图的图形信息包括构成矢量图的路径点;三角化处理模块,用于基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面;渲染模块,用于通过预设的开放图形库对矢量图的多个三角面进行渲染。
第三方面,实施例提供一种电子设备,包括处理器和存储器;存储器上存储有计算机程序,计算机程序在被处理器运行时执行如前述实施方式任一项的方法。
第四方面,实施例提供一种计算机可读存储介质,用于储存为前述实施方式任一项方法所用的计算机软件指令。
本发明提供的openFL绘制矢量图形的处理方法、装置及电子设备,当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息(包括构成矢量图的路径点),基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面,从而通过预设的开放图形库对矢量图的多个三角面进行渲染。通过基于矢量图形的路径点进行三角化得到多个三角面,在进行处理用户绘制的图形时,基于三角面的顶点对图形进行绘制和渲染等操作,无需在每次处理时都申请一个新的位图进行绘制,提高了绘制的效率,同时减少了内存的消耗。本发明实施例有效提高了openFL在绘制矢量图形时的处理效率,同时减少了内存消耗。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种openFL绘制矢量图形的处理方法的流程示意图;
图2为本发明实施例提供的另一种openFL绘制矢量图形的处理方法的流程示意图;
图3为本发明实施例提供的一种openFL绘制矢量图形的处理装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
openFL是用Haxe编程语言实现的Flash API,考虑到openFL中用户来回缩放2D场景时需要重复申请新的位图并在新申请的位图上绘制图形,造成内存消耗较大的情况,另外,当位图很大或者绘制图形过多时,在进行绘制计算时会很耗时,从而在缩放操作时造成明显的卡顿,本发明实施例提供了一种openFL绘制矢量图形的处理方法、装置及电子设备,可以有效提高了openFL在绘制矢量图形时的处理效率,同时减少了内存消耗。
为便于理解,首先对本发明实施例提供的一种openFL绘制矢量图形的处理方法进行详细介绍,参见图1所示的一种openFL绘制矢量图形的处理方法的流程示意图,该方法的执行主体为诸如计算机等的电子设备,该方法主要包括如下步骤S102和步骤S106:
步骤S102:当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息;矢量图的图形信息包括构成矢量图的路径点;
在一种实施方式中,用户触发的绘制命令可以包括绘制图形、线条和填充颜色等,当计算机检测到用户触发绘制命令时,通过openFL(基于Haxe编程语言实现的flash API)进行解析用户触发绘制命令,由于矢量图形存放于预设的开放图形库的Graphics类中,因此通过用户接口通过Graphics类调用绘制命令,将Graphics类传入到VGGraphics中解析用户触发的绘制指令,从而可以获取预设的开放图形库的Graphics类中的矢量图形信息。
步骤S104:基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面。
在一种实施方式中,矢量图的路径点是构成矢量图的点,通过用户的操作的多个路径点确定矢量图,通过OpenFL把用户定义的图形(也即矢量图)进行三角化,可以采用将矢量图进行进一步的划分,划分为更细小的线条,通过连接各个线条的端点,将矢量图形划分成若干个三角面。
步骤S106:通过预设的开放图形库对矢量图的多个三角面进行渲染。
在一种实施方式中,计算三角化后的矢量图的多个三角面的顶点坐标(也即UV坐标),预设的开放图形库可以为OpenGL(Open Graphics Library,开放图形库),通过openFL将三角面传至openGL中,这样就可以通过图形api OpenGL识别并且渲染出来,OpenGL中的着色器会根据用户的设置,对矢量图三角化后得到的多个三角面进行渲染,从而在绘制矢量图形时达到GPU硬件加速效果。
本发明提供的openFL绘制矢量图形的处理方法,该方法在检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息(包括构成矢量图的路径点),基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面,从而通过预设的开放图形库对矢量图的多个三角面进行渲染。通过基于矢量图形的路径点进行三角化得到多个三角面,在进行处理用户绘制的图形时,基于三角面的顶点对图形进行绘制和渲染等操作,无需在每次处理时都申请一个新的位图进行绘制,提高了绘制的效率,同时减少了内存的消耗。本发明实施例有效提高了openFL在绘制矢量图形时的处理效率,同时减少了内存消耗。
为便于对openFL代替flash实现矢量图形绘制的功能的理解,参见如图2所示的另一种openFL绘制矢量图形的处理方法的流程示意图,该方法主要包括:通过openFL解析用户触发的绘制命令、对蒙版功能的实现、生成三角面和提交到openGL进行渲染。具体的,对蒙版功能的实现包括如果当前图形作为其他图形的蒙版,则将模板值加1,如果设置其他图形作为当前图形的蒙版,则进行模板测试,测试通过后可以进行绘制。生成三角面主要包括线条模式生成三角面和填充模式生成三角面,在线条模式中,可以按照闭合线条和非闭合线条进行两种不同的处理,在填充模式中,可以按照多边形的种类,诸如凸多边形、凹多边形和自交多边形进行不同的处理,另外在填充模式中,还包括颜色填充和图片填充,通过三角面的顶点生成UV坐标进行生成三角面,最终将生成的三角面提交至OpenGL进行渲染。下面将对该流程进行一个详细的介绍。
在一种实施方式中,绘制的2D图形可以裁剪区域,在设置蒙版裁剪区域之后,如果绘制超出这个图形之外的其他图形是无法进行显示的。因此需要通过图形API(也即openGL)的模板测试进行处理,如果当前图形作为其他图形的蒙版,则作为蒙版的图形禁止绘制到颜色缓冲区,绘制到模板缓冲区,对模板值+1,并且记录当前模板值。在后续绘制中,首先进行模板测试,如果当前模板值等于预先记录的模板值,则开始绘制,其中,预先记录的模板值为上述将用户绘制的当前图形作为蒙版时记录的模板值。另外,如果用户采用离屏绘制的方式,在存在蒙版的情况下,需要在申请openGL的FBO(FramebufferObject,帧缓冲对象)时候给FBO附加上模板缓冲区。
在一种实施方式中,矢量图的图形信息还包括用户设置的矢量图中线条的线条宽度;当用户绘制了线条后,通过当前点到下一个点产生的向量计算垂直向量,然后根据用户设置的线条宽度向上向下获取垂直向量上面的平行线和下面的平行线,得到与用户设置的线条宽度对应的线条。
另外,用户绘制的矢量图还可以包括曲线图形,由于二次贝塞尔,椭圆,圆可以都可以转换为三次贝塞尔曲线,因此基于三次贝塞尔曲线方程将曲线进行分割得到多段直线,诸如通过将曲线代入三次贝塞尔方程中,每次推进若干距离,推进的若干距离可以按照实际需求进行设置,间隔越短平滑效果越好,以使openFL通过分割得到的多段直线的端点对矢量图进行三角化。
在一种实施方式中,通过openFL实现填充绘制首先需要进行三角化,矢量图中的多边形包括凸多边形、凹多边形或自交多边形,针对不同类型的多边形,采用不同的三角化的方式,如果矢量图为凸多边形,诸如矩形、三角形等,采用扇形绘制,将凸多边形的路径点的第一个点作为圆心,将其他的点进行连接,则可以产生一个或多个三角面,通过openFL得到多个三角面;如果矢量图为凹多边形,可以基于耳切法(一种多边形三角化算法)进行三角化,进而进行细分三角面。如果矢量图为自交多边形,按照奇偶规则或非零缠绕规则进行三角化,具体的,在区域里任意一点产生对外的射线,按照奇偶规则,对射线和多边形边的相交次数计数+1,如果新得到的相交次数为奇数则填充重叠区域,如果为偶数则不填充;按照非零规则,如果是顺时针缠绕射线和多边形的边则相交计数+1,逆时针缠绕射线和多边形的边相交计数-1,计数不为零就填充。将由于C库libtess2可以处理这种复杂多边形三角化,通过openFL进行三角化进而得到多个三角面可以采用将C库新增编译到openFL里面,然后通过NativeCFFI接口调用。
在一种实施方式中,用户绘制的矢量图的图形信息还包括用户设置的矢量图的填充颜色;上述将矢量图(包括凸多边形、凹多边形或自交多边形)经过三角化得到多个三角面后,通过预设的开放图形库(也即OpenGL)对矢量图的多个三角面进行渲染,需要确定每个三角面的顶点在图上的位置,首先计算矢量图的每个三角面的顶点的UV坐标,U和V分别是图片在显示器水平、垂直方向上的坐标,取值一般都是0~1,也就是(水平方向的第U个像素/图片宽度,垂直方向的第V个像素/图片高度),每个图片还可以设置变换矩阵(用来进行变换或平移等操作),判断用户是否触发变换指令,如果是,计算变换矩阵的逆矩阵,逆矩阵对三角面的顶点进行变换,然后除上用户设置的图片的宽和高即可得到和flash一样效果的图片填充。
在一种实施方式中,还需要通过openFL处理缩放模式,从而实现对矢量图进行缩放,可以通过确定缩放模式的类型进行处理,缩放模式的类型包括普通模式和线条不缩放模式,如果是普通模式,则把三角面网格缩放,通过把世界变换矩阵传入到openGL中shader的顶点着色器进行变换,如果是线条不缩放模式,由于线条宽度不会随着一起缩放,需要每次重新计算整个线条三角化,并将线条宽度进行反向缩放,这样就可以保持缩放线条宽度不会随着一起缩放,需要的缩放值保存在世界变换矩阵的Matrix类的a,d分量里,Matrix类标识的是一个转换矩阵,a、d分量为Matrix类的属性,分量a为缩放或旋转图像时影响像素沿x轴的定位,d为缩放或旋转图像时影响像素沿y轴的定位。
对于上述openFL绘制矢量图形的处理方法,本发明实施例还提供了一种openFL绘制矢量图形的处理装置,参见如图3所示的一种openFL绘制矢量图形的处理装置的结构示意图,该装置主要包括以下部分:
解析模块302,用于当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息;矢量图的图形信息包括构成矢量图的路径点。
三角化处理模块304,用于基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面。
渲染模块306,用于通过预设的开放图形库对矢量图的多个三角面进行渲染。
本发明提供的openFL绘制矢量图形的处理装置,当检测到用户触发的绘制命令时,通过openFL解析绘制命令获取矢量图的图形信息(包括构成矢量图的路径点),基于矢量图的路径点,通过openFL将矢量图进行三角化,得到矢量图的多个三角面,从而通过预设的开放图形库对矢量图的多个三角面进行渲染。通过基于矢量图形的路径点进行三角化得到多个三角面,在进行处理用户绘制的图形时,基于三角面的顶点对图形进行绘制和渲染等操作,无需在每次处理时都申请一个新的位图进行绘制,提高了绘制的效率,同时减少了内存的消耗。本发明实施例有效提高了openFL在绘制矢量图形时的处理效率,同时减少了内存消耗。
在一种实施方式中,矢量图形存放于预设的开放图形库的Graphics类中,上述解析模块302,进一步用于当检测到用户触发的绘制命令时,通过openFL解析绘制命令,从而获取预设的开放图形库的Graphics类中的矢量图形信息。
在一种实施方式中,矢量图包括曲线图形,装置还包括:曲线分割模块,用于基于三次贝塞尔曲线方程将曲线图形进行分割得到多段直线,以使openFL基于每段直线的端点对矢量图进行三角化。
在一种实施方式中,矢量图包括凸多边形、凹多边形或自交多边形;上述三角化处理模块304,进一步用于如果矢量图为凸多边形,基于凸多边形的路径点,通过openFL得到多个三角面;如果矢量图为凹多边形,基于耳切法进行三角化,通过openFL得到多个三角面;如果矢量图为自交多边形,按照奇偶规则或非零缠绕规则进行三角化,通过openFL得到多个三角面。
在一种实施方式中,矢量图的图形信息还包括用户设置的矢量图的填充颜色,上述渲染模块306,进一步用于计算矢量图的每个三角面的顶点的UV坐标;判断用户是否触发变换指令,如果是,基于UV坐标和预设的变换矩阵按照预设的变换方式进行变换,得到变换后的三角面,并通过预设的开放图形库对变换后的三角面按照用户设置的矢量图的填充颜色进行渲染。
在一种实施方式中,矢量图的图形信息还包括用户设置的矢量图中线条的线条宽度,装置还包括:线条绘制模块,用于基于矢量图中线条的第一端点及用户设置的矢量图中线条的线条宽度确定矢量图中线条的垂直向量,并基于路径点、垂直向量进行线条的绘制;线条绘制包括闭合曲线的线条绘制和非闭合曲线的线条绘制。
在一种实施方式中,装置还包括:缩放模块,用于确定缩放模式的类型;缩放模式的类型包括普通模式和线条不缩放模式;判断缩放模式是否为线条不缩放模式;如果是,在进行缩放操作时将线条宽度进行反向缩放。
在一种实施方式中,装置还包括:模板测试模块,用于在用户绘制前进行模板测试,如果当前模板值等于预先记录的模板值,则开始绘制;其中,预先记录的模板值包括将用户绘制的当前图形作为蒙版时记录的模板值。
该设备为一种电子设备,具体的,该电子设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图4为本发明实施例提供的一种电子设备的结构示意图,该电子设备100包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种openFL绘制矢量图形的处理方法,其特征在于,所述方法包括:
当检测到用户触发的绘制命令时,通过所述openFL解析所述绘制命令获取矢量图的图形信息;所述矢量图的图形信息包括构成所述矢量图的路径点;
基于所述矢量图的路径点,通过所述openFL将所述矢量图进行三角化,得到所述矢量图的多个三角面;
计算所述矢量图的每个所述三角面的顶点的UV坐标;判断所述用户是否触发变换指令,如果是,基于所述UV坐标和预设的变换矩阵按照预设的变换方式进行变换,得到变换后的三角面,并通过预设的开放图形库对所述变换后的三角面按照用户设置的所述矢量图的填充颜色进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述矢量图的图形信息存放于所述预设的开放图形库的Graphics类中;所述当检测到用户触发的绘制命令时,通过所述openFL解析所述绘制命令获取矢量图的图形信息的步骤,包括:
当检测到用户触发的绘制命令时,通过所述openFL解析所述绘制命令,从而获取所述预设的开放图形库的Graphics类中的所述矢量图的图形信息。
3.根据权利要求1所述的方法,其特征在于,所述矢量图包括曲线图形;所述方法还包括:
基于三次贝塞尔曲线方程将所述曲线图形进行分割得到多段直线,以使所述openFL基于每段所述直线的端点对所述矢量图进行三角化。
4.根据权利要求1所述的方法,其特征在于,所述矢量图包括凸多边形、凹多边形或自交多边形;所述基于所述矢量图的路径点,通过所述openFL将所述矢量图进行三角化,得到所述矢量图的多个三角面的步骤,包括:
如果所述矢量图为所述凸多边形,基于所述凸多边形的路径点,通过所述openFL得到多个所述三角面;
如果所述矢量图为所述凹多边形,基于耳切法进行三角化,通过所述openFL得到多个所述三角面;
如果所述矢量图为所述自交多边形,按照奇偶规则或非零缠绕规则进行三角化,通过所述openFL得到多个所述三角面。
5.根据权利要求1所述的方法,其特征在于,所述矢量图的图形信息还包括用户设置的所述矢量图的填充颜色。
6.根据权利要求1所述的方法,其特征在于,所述矢量图的图形信息还包括用户设置的所述矢量图的线条宽度;所述方法还包括:
基于所述矢量图的线条的第一端点及用户设置的所述矢量图的线条宽度确定所述矢量图的线条的垂直向量,并基于所述路径点、所述垂直向量进行线条绘制;所述线条绘制包括闭合曲线的线条绘制和非闭合曲线的线条绘制。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述矢量图进行缩放;所述对所述矢量图进行缩放的步骤,包括:
确定缩放模式的类型;所述缩放模式的类型包括普通模式和线条不缩放模式;
判断所述缩放模式是否为线条不缩放模式;
如果是,在进行缩放操作时将所述矢量图中的线条的线条宽度进行反向缩放。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在用户绘制前进行模板测试,如果当前模板值等于预先记录的模板值,则开始绘制;其中,所述预先记录的模板值包括将用户绘制的当前图形作为蒙版时记录的模板值。
9.一种openFL绘制矢量图形的处理装置,其特征在于,所述装置包括:
解析模块,用于当检测到用户触发的绘制命令时,通过所述openFL解析所述绘制命令获取矢量图的图形信息;所述矢量图的图形信息包括构成所述矢量图的路径点;
三角化处理模块,用于基于所述矢量图的路径点,通过所述openFL将所述矢量图进行三角化,得到所述矢量图的多个三角面;
渲染模块,用于计算所述矢量图的每个所述三角面的顶点的UV坐标;判断所述用户是否触发变换指令,如果是,基于所述UV坐标和预设的变换矩阵按照预设的变换方式进行变换,得到变换后的三角面,并通过预设的开放图形库对所述变换后的三角面按照用户设置的所述矢量图的填充颜色进行渲染。
10.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010019745.8A CN111260750B (zh) | 2020-01-08 | 2020-01-08 | openFL绘制矢量图形的处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010019745.8A CN111260750B (zh) | 2020-01-08 | 2020-01-08 | openFL绘制矢量图形的处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111260750A CN111260750A (zh) | 2020-06-09 |
CN111260750B true CN111260750B (zh) | 2023-07-07 |
Family
ID=70948580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010019745.8A Active CN111260750B (zh) | 2020-01-08 | 2020-01-08 | openFL绘制矢量图形的处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111260750B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113822787A (zh) * | 2020-06-19 | 2021-12-21 | 深圳市立创软件开发有限公司 | 一种基于gpu加速的2d复杂多边形渲染方法 |
CN112053410A (zh) * | 2020-08-24 | 2020-12-08 | 海南太美航空股份有限公司 | 一种基于矢量图形绘制的图像处理方法、***及电子设备 |
CN114820873B (zh) * | 2022-05-13 | 2023-04-07 | 南京大学 | 基于涂色的草图规整化方法、装置及介质 |
CN114968041A (zh) * | 2022-05-24 | 2022-08-30 | 北京有竹居网络技术有限公司 | 基于图形的事件响应方法、装置、设备和介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4370438B2 (ja) * | 2007-06-27 | 2009-11-25 | Necシステムテクノロジー株式会社 | ベクター画像描画装置、ベクター画像描画方法およびプログラム |
CN104952101B (zh) * | 2015-05-21 | 2017-12-05 | 中国人民解放军理工大学 | 一种基于高度场的动态矢量渲染方法 |
CN105302445B (zh) * | 2015-11-12 | 2019-07-23 | 小米科技有限责任公司 | 图形用户界面绘制方法及装置 |
CN106709863B (zh) * | 2016-12-28 | 2020-04-28 | 杭州趣维科技有限公司 | 一种基于gpu的高效2d矢量图形渲染方法 |
CN109829962B (zh) * | 2019-01-29 | 2022-11-25 | 广联达科技股份有限公司 | 一种利用opengl的物体空间消隐线计算加速方法 |
-
2020
- 2020-01-08 CN CN202010019745.8A patent/CN111260750B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111260750A (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111260750B (zh) | openFL绘制矢量图形的处理方法、装置及电子设备 | |
KR102475212B1 (ko) | 타일식 아키텍처들에서의 포비티드 렌더링 | |
JP5232358B2 (ja) | アウトラインフォントのレンダリング | |
US10424112B2 (en) | Mesh boundary smoothing | |
US10592242B2 (en) | Systems and methods for rendering vector data on static and dynamic-surfaces using screen space decals and a depth texture | |
US8379025B1 (en) | Methods and apparatus for rendering vector art on graphics hardware | |
US9153068B2 (en) | Clipless time and lens bounds for improved sample test efficiency in image rendering | |
JP6863693B2 (ja) | グラフィックス処理システムおよび方法 | |
US8269770B1 (en) | Tessellation of trimmed parametric surfaces by walking the surface | |
JP2005100177A (ja) | 画像処理装置およびその方法 | |
US7944442B2 (en) | Graphics system employing shape buffer | |
CN104933749B (zh) | 图形图元的裁剪 | |
JP2006120158A (ja) | 3dにおけるハードウェアアクセラレートされたアンチエイリアジング(hardwareacceleratedanti−aliasing)のための方法 | |
US6421063B1 (en) | Pixel zoom system and method for a computer graphics system | |
US9142043B1 (en) | System and method for improved sample test efficiency in image rendering | |
TWI769138B (zh) | 圖形處理之方法、流水線電路以及計算機程序 | |
JP2005100176A (ja) | 画像処理装置およびその方法 | |
US11087511B1 (en) | Automated vectorization of a raster image using a gradient mesh with arbitrary topology | |
US8040357B1 (en) | Quotient remainder coverage system and method | |
US11010939B2 (en) | Rendering of cubic Bezier curves in a graphics processing unit (GPU) | |
US11232613B1 (en) | Curve antialiasing based on curve-pixel intersection | |
US9367941B2 (en) | Image output apparatus and method of rendering an image | |
CN109427084B (zh) | 一种地图显示方法、装置、终端及存储介质 | |
CN114820853A (zh) | 矢量图形的处理方法、装置、计算机设备和存储介质 | |
US8274513B1 (en) | System, method, and computer program product for obtaining a boundary attribute value from a polygon mesh, during voxelization |
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 |