public override void ToolActionCompleted() { if (_newPath != null) { _newPath.CloseFigure(); } _startPathDraw = true; IsComplete = true; _newPath = null; }
public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { ToolActionCompleted(); return; } // Create new polygon, add it to the list // and keep reference to it if (_startPathDraw) { _newPath = new DrawConnectObject(e.X, e.Y); AddNewObject(drawArea, _newPath); _startPathDraw = false; IsComplete = false; } else { _newPath.AddPoint(e.Location); } }
/// <summary> /// 根据读取的xml生成项目 /// </summary> /// <param name="svg"></param> public static void CreateProjectFromXML(SVGUnit svg, DrawObjectList list) { while (svg != null) { switch (svg.getElementType()) { case SVGUnit.SVGUnitType.def: //将所有symbol读取 SVGUnit defchild = svg.getChild(); while (defchild != null) { if (defchild.getElementType() == SVGUnit.SVGUnitType.symbol) { CreateSysmbolUnit(defchild as SVGSymbol); } defchild = defchild.getNext(); } break; case SVGUnit.SVGUnitType.typeGroup: if (svg.Id == SVGDefine.ConnectLineClass) { SVGGroup group = svg.getChild() as SVGGroup; DrawConnectObject drawConnectObject = DrawConnectObject.Create(group.getChild() as SVGPath); SVGCN_Ref svgcnRef = group.getChild().getNext().getChild() as SVGCN_Ref; var linkDnd = svgcnRef.LinkObjecttlDnd.Split('@'); drawConnectObject.SetConnectDeviceFromXml(linkDnd[0], 1, int.Parse(linkDnd[1]), list.GetDeviceList()); linkDnd = svgcnRef.LinkObjectIDznd.Split('@'); drawConnectObject.SetConnectDeviceFromXml(linkDnd[0], 2, int.Parse(linkDnd[1]), list.GetDeviceList()); drawConnectObject.Id = int.Parse(group.Id); list.Add(drawConnectObject); group = group.getNext() as SVGGroup; } else if (svg.Id == SVGDefine.AnimationClass) { } else { SVGGroup group = svg.getChild() as SVGGroup; while (group != null) { var gchild = group.getChild(); switch (gchild.getElementType()) { case SVGUnit.SVGUnitType.use: SVGUse use = gchild as SVGUse; var gDevice = CreateDeviceDrawObjectBase(use, group.Id); //TODO 后期添加到工作组中 list.Add(gDevice); break; default: //TODO 未编排为设备的图素集合,暂时用临时分组表示 var o = SVGDrawFactory.CreateDrawObject(svg); list.Add(o); //vBase = new DeviceDrawObjectBase(0f, 0f, 0f, 0f, group.Id, drawObjects, null, ""); break; } group = group.getNext() as SVGGroup; //获取下一个 } } break; default: break; } svg = svg.getNext(); } }