本发明涉及图像处理技术领域,具体而言,涉及一种画刷轨迹的绘制方法和一种画刷轨迹的绘制装置。
背景技术:
在开发绘图应用时,开发人员往往希望能模拟出各种笔触,达到毛笔、水彩笔、蜡笔等特殊的绘制效果。然而,目前各种平台(Windows、IOS、Android)提供的绘制方式一般只有简单的Fill和Stroke两种,即只能达到简单的填充和轮廓等绘制效果,这远远不能满足用户的绘图需求。
因此,如何能够在各个平台上开发出带有笔触绘制效果的应用,以满足用户的绘图需求成为亟待解决的技术问题。
技术实现要素:
本发明正是基于上述技术问题至少之一,提出了一种新的画刷轨迹的绘制方案,实现了在各个平台上均能开发出带有笔触绘制效果的应用,也满足了用户的绘图需求。
有鉴于此,本发明提出了一种画刷轨迹的绘制方法,包括:获取画刷轨迹数据;基于所述画刷轨迹数据,生成画刷轨迹;根据用户设置的笔刷属性,生成所述画刷轨迹上多个点的笔触纹理;根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹。
在该技术方案中,通过获取画刷轨迹数据,并基于画刷轨迹数据生成画刷轨迹,根据用户设置的笔刷属性生成画刷轨迹上多个点的笔触纹理,以根据多个点的笔触纹理在画板上绘制画刷轨迹,使得不管画刷轨迹数据来自于哪个平台,均能够根据画刷轨迹数据和用户设置的笔刷属性,绘制得到画刷轨迹,实现了在各个平台上均能开发出带有笔触绘制效果的应 用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时也满足了用户的绘图需求。
在上述技术方案中,优选地,所述画刷轨迹数据包括多个离散点;基于所述画刷轨迹数据,生成画刷轨迹的步骤具体包括:根据所述画刷轨迹数据中包含的多个离散点,拟合生成贝塞尔(Bezier)曲线,以得到所述画刷轨迹。
在上述任一技术方案中,优选地,根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹的步骤具体包括:在所述画板上绘制所述多个点的笔触纹理,以得到所述画刷轨迹。
具体地,由于画刷轨迹是由多个点组成的,因此可以通过绘制多个点的笔触纹理,得到由多个点组成的画刷轨迹。
在上述任一技术方案中,优选地,在获取所述画刷轨迹数据的步骤之前,还包括:生成绘制所述画刷轨迹的图层;创建新的绘制任务,并创建绘制渲染器;将所述图层添加至所述绘制任务;创建用于获取所述画刷轨迹数据的工具、用于生成所述笔触纹理的笔触生成器;创建画刷工具,并设置所述笔刷属性。
在上述任一技术方案中,优选地,在画板上绘制所述画刷轨迹之后,还包括:将所述图层与所述画板进行混合渲染,并实时输出。
根据本发明的另一方面,还提出了一种画刷轨迹的绘制装置,包括:获取单元,用于获取画刷轨迹数据;第一生成单元,用于基于所述画刷轨迹数据,生成画刷轨迹;第二生成单元,用于根据用户设置的笔刷属性,生成所述画刷轨迹上多个点的笔触纹理;绘制单元,用于根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹。
在该技术方案中,通过获取画刷轨迹数据,并基于画刷轨迹数据生成画刷轨迹,根据用户设置的笔刷属性生成画刷轨迹上多个点的笔触纹理,以根据多个点的笔触纹理在画板上绘制画刷轨迹,使得不管画刷轨迹数据来自于哪个平台,均能够根据画刷轨迹数据和用户设置的笔刷属性,绘制得到画刷轨迹,实现了在各个平台上均能开发出带有笔触绘制效果的应用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时也满 足了用户的绘图需求。
在上述技术方案中,优选地,所述画刷轨迹数据包括多个离散点;所述第一生成单元具体用于,根据所述画刷轨迹数据中包含的多个离散点,拟合生成贝塞尔曲线,以得到所述画刷轨迹。
在上述任一技术方案中,优选地,所述绘制单元具体用于,在所述画板上绘制所述多个点的笔触纹理,以得到所述画刷轨迹。
具体地,由于画刷轨迹是由多个点组成的,因此可以通过绘制多个点的笔触纹理,得到由多个点组成的画刷轨迹。
在上述任一技术方案中,优选地,还包括:初始化单元,用于生成绘制所述画刷轨迹的图层,并创建新的绘制任务和绘制渲染器;并用于将所述图层添加至所述绘制任务;还用于创建用于获取所述画刷轨迹数据的工具、用于生成所述笔触纹理的笔触生成器;创建画刷工具,并设置所述笔刷属性。
在上述任一技术方案中,优选地,还包括:处理单元,用于所述绘制单元在画板上绘制所述画刷轨迹之后,将所述图层与所述画板进行混合渲染,并实时输出。
通过以上技术方案,实现了在各个平台上均能开发出带有笔触绘制效果的应用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时也满足了用户的绘图需求。
附图说明
图1示出了根据本发明的实施例的画刷轨迹的绘制方法的示意流程图;
图2示出了根据本发明的实施例的画刷轨迹的绘制装置的示意框图;
图3示出了根据本发明的实施例的画刷轨迹绘制过程在初始化阶段的流程示意图;
图4示出了根据本发明的实施例的画刷轨迹绘制过程在绘制阶段的流程示意图;
图5示出了根据本发明的实施例的画刷轨迹绘制过程在初始结束阶段 的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的画刷轨迹的绘制方法的示意流程图。
如图1所示,根据本发明的实施例的画刷轨迹的绘制方法,包括:
步骤102,获取画刷轨迹数据;
步骤104,基于所述画刷轨迹数据,生成画刷轨迹;
步骤106,根据用户设置的笔刷属性,生成所述画刷轨迹上多个点的笔触纹理;
步骤108,根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹。
在该技术方案中,通过获取画刷轨迹数据,并基于画刷轨迹数据生成画刷轨迹,根据用户设置的笔刷属性生成画刷轨迹上多个点的笔触纹理,以根据多个点的笔触纹理在画板上绘制画刷轨迹,使得不管画刷轨迹数据来自于哪个平台,均能够根据画刷轨迹数据和用户设置的笔刷属性,绘制得到画刷轨迹,实现了在各个平台上均能开发出带有笔触绘制效果的应用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时也满足了用户的绘图需求。
在上述技术方案中,优选地,所述画刷轨迹数据包括多个离散点;基于所述画刷轨迹数据,生成画刷轨迹的步骤具体包括:根据所述画刷轨迹数据中包含的多个离散点,拟合生成贝塞尔(Bezier)曲线,以得到所述画刷轨迹。
在上述任一技术方案中,优选地,根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹的步骤具体包括:在所述画板上绘制所述多个点的笔触纹理,以得到所述画刷轨迹。
具体地,由于画刷轨迹是由多个点组成的,因此可以通过绘制多个点的笔触纹理,得到由多个点组成的画刷轨迹。
在上述任一技术方案中,优选地,在获取所述画刷轨迹数据的步骤之前,还包括:生成绘制所述画刷轨迹的图层;创建新的绘制任务,并创建绘制渲染器;将所述图层添加至所述绘制任务;创建用于获取所述画刷轨迹数据的工具、用于生成所述笔触纹理的笔触生成器;创建画刷工具,并设置所述笔刷属性。
在上述任一技术方案中,优选地,在画板上绘制所述画刷轨迹之后,还包括:将所述图层与所述画板进行混合渲染,并实时输出。
图2示出了根据本发明的实施例的画刷轨迹的绘制装置的示意框图。
如图2所示,根据本发明的实施例的画刷轨迹的绘制装置200,包括:获取单元202,用于获取画刷轨迹数据;第一生成单元204,用于基于所述画刷轨迹数据,生成画刷轨迹;第二生成单元206,用于根据用户设置的笔刷属性,生成所述画刷轨迹上多个点的笔触纹理;绘制单元208,用于根据所述多个点的笔触纹理,在画板上绘制所述画刷轨迹。
在该技术方案中,通过获取画刷轨迹数据,并基于画刷轨迹数据生成画刷轨迹,根据用户设置的笔刷属性生成画刷轨迹上多个点的笔触纹理,以根据多个点的笔触纹理在画板上绘制画刷轨迹,使得不管画刷轨迹数据来自于哪个平台,均能够根据画刷轨迹数据和用户设置的笔刷属性,绘制得到画刷轨迹,实现了在各个平台上均能开发出带有笔触绘制效果的应用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时也满足了用户的绘图需求。
在上述技术方案中,优选地,所述画刷轨迹数据包括多个离散点;所述第一生成单元204具体用于,根据所述画刷轨迹数据中包含的多个离散点,拟合生成贝塞尔曲线,以得到所述画刷轨迹。
在上述任一技术方案中,优选地,所述绘制单元208具体用于,在所 述画板上绘制所述多个点的笔触纹理,以得到所述画刷轨迹。
具体地,由于画刷轨迹是由多个点组成的,因此可以通过绘制多个点的笔触纹理,得到由多个点组成的画刷轨迹。
在上述任一技术方案中,优选地,还包括:初始化单元210,用于生成绘制所述画刷轨迹的图层,并创建新的绘制任务和绘制渲染器;并用于将所述图层添加至所述绘制任务;还用于创建用于获取所述画刷轨迹数据的工具、用于生成所述笔触纹理的笔触生成器;创建画刷工具,并设置所述笔刷属性。
在上述任一技术方案中,优选地,还包括:处理单元212,用于所述绘制单元在画板上绘制所述画刷轨迹之后,将所述图层与所述画板进行混合渲染,并实时输出。
以下结合图3至图5详细说明本发明的技术方案。
根据本发明的一个实施例,可以将OpenGL(Open Graphics Library)的绘制细节封装成一个跨平台的内核库,来满足各平台下快速开发画刷应用的需求。在实现各种笔触绘制效果的同时,开发者无需关心底层繁琐的实现过程。
为了能迅速、方便地在各平台上开发绘图应用,在该实施例中设计了基于OpenGL的画刷内核,其主要结构说明如下:
CZActiveState:是用于管理当前状态的模块;
CZFreehandTool:是用于负责收集轨迹数据的工具模块;
CZLayer:是图层模块;
CZPath:是表示绘制轨迹的模块;
CZPainting:是绘制管理模块;
CZBrush:是画刷模块;
CZGenerator:是笔触生成器模块;
CZRender、CZPaintingRender:是绘制模块。
内核通过CZFreehandTool模块收集到绘制的轨迹数据后,生成相应的Bezier曲线。对于曲线上每个离散的点用当前笔触的纹理表示。内核利用OpenGL将所有纹理混合,绘制到当前图层。在每一笔结束后,将所有 图层渲染输出到屏幕显示出来。具体流程包括初始化阶段、绘制阶段和结束阶段。
其中,初始化阶段的处理流程如图3所示,包括:
步骤302,创建初始图层。
步骤304,创建一张绘画及其渲染器。
步骤306,创建绘制工具。
步骤308,创建笔触生成器及画刷。
步骤310,配置画刷参数。
绘制阶段的处理流程如图4所示,包括:
步骤402,收集轨迹上的点。
步骤404,拟合曲线,生成轨迹。
步骤406,设置轨迹参数。
步骤408,绘制到画板。
步骤410,笔触生成器生成当前纹理。
步骤412,生成笔触纹理,并执行步骤408,绘制到画板。
步骤414,将画板与其他图层混合。
步骤416,将绘制结果输出至屏幕。
结束阶段的处理流程如图5所示,包括:
步骤502,收集轨迹上最后的点。
步骤504,拟合曲线,生成轨迹。
步骤506,设置轨迹参数。
步骤508,绘制到画板。
步骤510,将画板内容绘制到当前图层。
在以上实施例的技术方案中,基于跨平台的专业图形程序接口OpenGL设计和开发了一套画刷内核,利用这套内核,只要将应用收集到的画刷轨迹数据输入,在各个平台都可以实时得到笔刷的绘制效果。
以上结合附图详细说明了本发明的技术方案,本发明提出了一种新的画刷轨迹的绘制方案,实现了在各个平台上均能开发出带有笔触绘制效果的应用,并且使得不同平台的开发者无需关心底层繁琐的实现过程,同时 也满足了用户的绘图需求。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。