基于CorelDRAW的河流几何渐变绘制技术探析

2018-11-01 03:15房雪玲
城市勘测 2018年5期
关键词:小段单线双线

房雪玲

(辽宁宏图创展测绘勘察有限公司,辽宁 沈阳 110169)

1 引 言

CorelDRAW凭借对图形文字强大的编辑功能、兼容数据格式多源化、内嵌宏编辑器及Type Library控件便于用户的二次开发,尤其是符号化功能强大,可完成线要素的可控性渐变。河流几何渐变表达是制图难点重点之一,CorelDRAW X5中河流渐变的传统方法分为3种:艺术笔触法、分段设置法、编程法。考虑到CorelDRAW X5中传统河流渐变方法存在的局限性,本文对单、双线河流渐变模型进行了改进,同时基于等长模型、等差模型以及制图模型,引用CorelDRAW 15.0 Type Library控件进行二次开发,实现了单双线河流的智能渐变,为今后地图编辑效率提升与图面要素艺术性表达提供了参考。

2 河流渐变传统方法

传统河流渐变绘制大致有三种方法:一是艺术笔触法,即利用CorelDRAW X5中“艺术笔”工具,根据河流的流向绘制粗细渐变的河流;二是分段设置法,即利用现有的绘图工具绘制河流弧段,然后对弧段作渐变处理;三是编程法,即从程序设计角度,利用台阶式平行线算法和加以改进的角平分线渐粗线算法实现河流渐变。

“艺术笔”工具中预置型曲线工具可以用来绘制粗细渐变的河流和水系。首先在绘线工具的展开栏中选择“艺术笔”工具,根据河流的流向在形状框中选取契形画笔;然后在【最大宽度】数据框内输入河流起始段的最大宽度,终端最小宽度则默认为0;最后确定河流的填充色和轮廓色,以区分单、双线河流。艺术笔触法方便快捷、线条平滑流畅,但可控性差、不方便编辑。分段设置法弥补了艺术笔触法的缺憾,可对每个弧段都进行渐变处理,但是人工干预多、效率低下。

台阶式平行线算法以及加以改进的角平分线渐粗线算法是在程序设计中对渐变河流的特征点加以控制,通过改变节点左右两边线端点与定位线的间距,或使左右平行线的端点在定位线角平分线上变化实现河流的渐粗变化。虽然都实现了河流的可控渐变,但是前者在河流节点处很容易造成阶梯变化,表现的河流不够自然,后者避免了河流的阶梯变化,但绘制的渐变符号比较平直,同样不能逼真地表现河流形态。

3 单双线河流的几何渐变

考虑到CorelDRAW X5中传统河流渐变方法存在的局限性,本文对单、双线河流渐变模型进行了改进,并基于等长模型、等差模型和制图模型,引用CorelDRAW 15.0 Type Library控件进行二次开发,实现了单、双线河流的自动化渐变,两种方法人工干预少、渐变符号平滑,能够生动地表现河流的形态。

3.1 河流渐变的几何模型

地图的河流要素大多用渐粗线来表示,起始段与结束段的宽度确定以后,中间一段的变化包括3种情况,一是线段粗线的变化一致,即等长模型;二是线段均匀变化,即等差模型;三是起始部分的变化快,中间部分的变化较慢,而终端部分的变化再次较快,即制图模型。

将河流起始段的宽度定义为D1,结束段的宽度定义为D2,河流总长度定义为S,所分段数定义为N,中间各段的宽度定义为di(i=2,3…,N-1)、长度定义为sj(j=1,2…,N),那么3种渐变模型如式(1)~式(5)所示:

(1)等长模型

(1)

(2)等差模型

(2)

等差模型将2S/3N定义为各段的基本长度,之后将剩余S/3分割成N(N-1)/2份,那么sj等于基本长度加上S/3等分后小段长度的(k-1)倍。

(3)制图模型

①段数N是偶数

(3)

②段数N是奇数

(4)

制图模型是将S/2N定义为各段基本长度,之后将剩余S/2等分为两部分,每一部分均分割成((N-2)/2+…+2+1)小段,那么sj等于基本长度加上S/4等分后小段长度的(k-1)倍。

3种模型完成河流中间段的长度分配以后,利用式(5)的模型逐一将各小段赋以渐变宽度,假定d1=D1,dN=D2,那么:

(5)

3.2 单线河流的几何渐变

基于3种几何模型,本文在CorelDRAW X5 Micro Editor中创建了“单线河流的几何渐变”窗体,如图1所示。文本框用于控制河流的起始段、结束段宽度以及被打断的段数,“改变流向”功能用于调整河流的流向,考虑到河流渐变的美观性和CorelDRAW恢复操作次数的局限性,作者添加了“撤销渐变”命令按钮,用于将渐变后的河流恢复到初始样式。以某条单线河的渐变为例,具体实现流程如下:

图1 单线河流的几何渐变窗体

(1)建立riverchange。首先基于河流渐变模型,根据预设的各项河流参数,代入式(1)~式(4)分别计算单线河流每一小段的长度,然后引用SubPaths的AddNodeAt方法,逐一在第j小段的结尾处添加节点(j=1,2,…,N-1),然后引用ShapeRange和NodeRange的BreakApart方法,将河流拆分成N段,最后根据CheckBox确定的河流方向代入式(5),计算单线河流第j小段轮廓线的宽度,并引用Shape.Outline的Width属性,依次对每小段河流的轮廓线宽度进行赋值;

(2)引用ShapeRange的Group方法,首先将N小段河流群组,然后引用Shape.Outline的LineCaps属性,将线条端头形式调整为节点在内的圆头形状,使河流在拐弯处的渐变更加平滑;

(3)“恢复渐变”用于将渐变后的河流恢复到最初样式,首先利用ActiveSelectionRange的UngroupEx方法将群组的N段河流解组,然后利用Node的GetDistanceFrom及Jointwith方法,依次将相邻小段河流的相邻节点进行连接,直至将N小段河流合并为一条单线河流,最后恢复单线河流的折线角度形式(选择cdrOutlineMiterLineJoin)以及线条端头形式(选择cdrOutlineButtLineCaps)。

图2对流向改变前后的单线河流渐变进行了成果展示。

图2 单线河流渐变成果图

3.3 双线河流的几何渐变

基于3种几何模型,本文在CorelDRAW X5 Micro Editor中创建了“双线河流的几何渐变”窗体,如图3所示。文本框用于控制设置河流参数,即河流的起始段、结束段宽度以及分段数,“改变流向”功能用于调整河流的流向。以某条双线河的渐变为例,具体步骤如下:

图3 双线河流的几何渐变窗体

(1)建立riverchange。首先基于河流渐变模型,根据预设的各项河流参数,代入式(1)~式(4)分别计算双线河流每一小段的长度,然后引用SubPaths的AddNodeAt方法,逐一在第j小段的结尾处添加节点(j=1,2,…,N-1),然后引用ShapeRange和NodeRange的BreakApart方法,将河流拆分成N段,最后根据CheckBox确定的河流方向代入式(5),计算单线河流第j小段轮廓线的宽度,计算双线河流第j小段轮廓线的宽度,并引用Shape.Outline的Width属性,依次对每小段河流的轮廓线宽度赋值;

(2)引用ShapeRange的Group方法,首先将N小段河流群组,然后引用Shape.Outline的LineCaps属性,将线条的端头形式调整为节点在内的圆头形状,使河流在拐弯处的渐变更加平滑;

(3)首先引用Shape.Outline的ConvertToObject方法,将群组后的N小段河流依次由轮廓转化为对象,然后调用Shape的Weld方法,将N小段河流焊接为单条的双线河,最后可调用Shape的Outline和Fill属性,调整双线河的轮廓色与填充色。

双线河流渐变成果如图4所示。

图4双线河渐变成果图

4 结 论

线条流畅、粗细变化均匀的河流渐变符号的绘制一直都是制图人员研究的重要课题。图形、文字及矢量线划编辑功能强大的CorelDRAW软件,在河流要素渐变中扮演着重要的角色。本文总结并分析了CorelDRAW X5进行河流渐变的方法及存在的缺陷,对单、双线河流渐变模型进行了改进,同时基于等长模型、等差模型以及制图模型,引用CorelDRAW 15.0 Type Library控件进行二次开发,实现了单双线河流的智能渐变,可为今后地图编辑效率提升与图面要素艺术性表达提供了参考。

猜你喜欢
小段单线双线
中老铁路双线区段送电成功
汪苏泷发布新单曲《小段》
中老铁路单线长隧贯通 国内玉磨段完成投资近九成
单线重载铁路双接近区段设置方案探讨
论“双线竹鼓壶”的花器工艺和文化蕴含
一种双线半自动闭塞信号过渡设计的研究
单线半自动车站接近区段电码化探讨
单线单变对电网稳定运行影响浅析
爱的抉择
再不舍,到站了就要下车