在平时的图形绘制中我们经常会遇到平行线的绘制,对于平行线的绘制下面将详细介绍基本的思路以及部分实现代码。
具体的请到www.msvdraw.com 下载相关的函数库
平行线如下所示:
图7.3 并行曲线
通过上面的图形你大概也能了解是怎么处理的,严格的说这里仅仅是做了简单的实现,在实际的项目操作中是要求连接处是光滑的。这个问题留给你来处理,我们只做简单的连接。
垂线的获得:
线条CD所在的折线(曲线)为基准线(为了讲解我们这样做了假设,在实际中是两条线之间的直线为基准,就是经过四个小矩形区域中点的折线为基准线)如何求垂直于CD的直线CL1与DL2两条直线。
实现代码如下
//计算轨迹两边的边界线坐标
定义中间变量
Vector2D curV,pervV;
求得A、B点的坐标
Vector2D pointA,PointB;
Point C,D;
将A、B点赋值
int k = 0;
Vector2D vf1(C.X,C.Y) ;
Vector2D vf2(D.X,D.Y) ;
//取得数据点
curV = vf2 - vf1;
将向量DC单位化处理
curV.SetUnit();
curV.Set(curV.y,-curV.x);
pointA = vf1+ curV * m_nOffsetLeft;
pointB = vf2+ curV * m_nOffsetLeft;
说明的是m_nOffsetLeft 为当前要求的平行线距离直线CD的距离(像素)。
这样就求得了直线AB(直线Line1)。依据同样的原理求得直线Line2 ,根据前面介绍的方法(直线求交)可以求得直线Line1与直线Line2的交点E,这样就可以求得关于CD直线的平行线AE。依次类推就可以求得其他折线段的平行线。同理求得另外的一条折线,这两条折线可以组成平行折线。
当折线是闭合的,那么需要针对折线的两个端点所在的直线作特殊的处理,使得求得偏移折线是闭合的。