#include "StdAfx.h" #include "ObjPline.h" #include "GlobalDrawMgr.h" #include "DataPoint.h" #include "GlobalFunction.h" CObjPline::CObjPline(void) { } CObjPline::~CObjPline(void) { } CString CObjPline::GetStr() { CString str = "多线段"; return str; } #if 1 //通过矩形的形式创建多线段point1 是左下角的点 void CObjPline::Creat(Dbxy point1,double w,double h) { //删除所有数据点 DelAllPt(); Dbxy point2(point1.x+w,point1.y+h); CreatRect(point1,point2); } //创建两点的直线 void CObjPline::Creat(Dbxy point1,Dbxy point2) { //删除所有数据点 DelAllPt(); if(point1 == point2)//相同的两个点 { { CDataPoint DataPoint(point1); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } } else { { CDataPoint DataPoint(point1); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } { CDataPoint DataPoint(point2); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } AddMidNodePoint(point1,point2); } } //添加一个obj 到多线段的后部(bReverse 为true 时反向) void CObjPline::AddObj(Sptr &pObj,bool bReverse) { if(bReverse) { vector&vec = pObj->GetPtContainer(); int size = vec.size(); for(int i=size-1;i>=0;i--) { AddDataPoint(vec[i]); } } else { vector&vec = pObj->GetPtContainer(); int size = vec.size(); for(int i=0;i&vec = GetPtContainer(); int size = vec.size(); for(int i=0;i0) { AddMidNodePoint(vec[i-1].GetPt(),vec[i].GetPt()); } } } //添加一个中间节点用来捕捉 void CObjPline::AddMidNodePoint(Dbxy point1,Dbxy point2) { Dbxy pt = CenterPtOfTwoPoint(point1,point2); CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddNodePt(DataPoint); } void CObjPline::CreatRect(DbRect rect) { Dbxy point1(rect.L,rect.B); Dbxy point2(rect.R,rect.T); CreatRect(point1,point2); } void CObjPline::CreatRect(Dbxy point1,Dbxy point2) { Dbxy pt = point1; { CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } pt.y = point2.y; { CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } AddMidNodePoint(point1,pt); AddMidNodePoint(point2,pt); pt = point2; { CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } pt.y = point1.y; { CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } AddMidNodePoint(point1,pt); AddMidNodePoint(point2,pt); pt = point1; { CDataPoint DataPoint(pt); DataPoint.SetIsNode(true); AddDataPoint(DataPoint); } } #endif #if 1//通过正多边形的形式创建 #endif