/// <summary> /// 手动 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="w"></param> /// <param name="h"></param> /// <param name="id"></param> /// <param name="entityId"></param> /// <returns></returns> public static DeviceDrawObjectBase CreateDeviceDrawObjectBase(float x, float y, float w, float h, string id, string entityId) { //获取每一个实例化的设备 DeviceDrawObjectBase vBase = null; List <DeviceDrawObjectBase> deviceDrawObjectBases = null; List <DrawObject> drawObjects = new List <DrawObject>(); var symbol = id;//设备定义引用 指明使用的哪一种设备类型 SymbolUnit._Dic.TryGetValue(symbol, out SymbolUnit value); if (value != null) { foreach (var unit in value._symbolChildSvgs) { if (unit.getElementType() == SVGUnit.SVGUnitType.use) { var childSvgUse = unit as SVGUse; var entityLInk = CreateDeviceDrawObjectBase(childSvgUse, entityId); if (deviceDrawObjectBases == null) { deviceDrawObjectBases = new List <DeviceDrawObjectBase>(); } { deviceDrawObjectBases.Add(entityLInk); } } else { var o = SVGDrawFactory.CreateDrawObject(unit); if (o != null) { if (o is DrawRectangleObject rectangleObject) { rectangleObject.Proportion = new PointF(rectangleObject.Width / w, rectangleObject.Height / h); } drawObjects.Add(o); } } } if (value.SymbolId.Contains("负荷开关@1")) { vBase = new SingleDisConnectorDevice(x, y, w, h, entityId, drawObjects, deviceDrawObjectBases, value.SymbolId); } else { vBase = new DeviceDrawObjectBase(x, y, w, h, entityId, drawObjects, deviceDrawObjectBases, value.SymbolId); } vBase.SetViewBox(value.W, value.H); } return(vBase); }
public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e) { currentDeviceId = drawArea.DeviceId;//获取当前的设备Id //TODO:根据不同的设备Id找到对用的设备信息 SymbolUnit._Dic.TryGetValue(currentDeviceId, out SymbolUnit value); var id = DateTime.Now.Ticks.ToString(); DeviceDrawObjectBase deviceDrawObjectBase = SVGFactory.CreateDeviceDrawObjectBase((float)e.X, (float)e.Y, 10, 20, currentDeviceId, id); drawArea.GraphicsList.Add(deviceDrawObjectBase); base.OnMouseDown(drawArea, e); }
public static DeviceDrawObjectBase CreateDeviceDrawObjectBase(SVGUse use, string entityId) { //获取每一个实例化的设备 DeviceDrawObjectBase vBase = null; List <DeviceDrawObjectBase> deviceDrawObjectBases = null; List <DrawObject> drawObjects = new List <DrawObject>(); if (use != null) { string id = use.HRef;//获取实体Id var x = string.IsNullOrEmpty(use.X)?0f:float.Parse(use.X); var y = string.IsNullOrEmpty(use.Y) ? 0f : float.Parse(use.Y); var w = string.IsNullOrEmpty(use.Width) ? 0f : float.Parse(use.Width); var h = string.IsNullOrEmpty(use.Height) ? 0f : float.Parse(use.Height); var symbol = use.HRef.Substring(1);//设备定义引用 指明使用的哪一种设备类型 SymbolUnit._Dic.TryGetValue(symbol, out SymbolUnit value); if (value != null) { foreach (var unit in value._symbolChildSvgs) { if (unit.getElementType() == SVGUnit.SVGUnitType.use) { var childSvgUse = unit as SVGUse; var entityLInk = CreateDeviceDrawObjectBase(unit as SVGUse, entityId); if (deviceDrawObjectBases == null) { deviceDrawObjectBases = new List <DeviceDrawObjectBase>(); } deviceDrawObjectBases.Add(entityLInk); } else { var o = SVGDrawFactory.CreateDrawObject(unit); if (o != null) { drawObjects.Add(o); } } } vBase = new DeviceDrawObjectBase(x, y, w, h, entityId, drawObjects, deviceDrawObjectBases, value.SymbolId); vBase.SetViewBox(value.W, value.H); } } return(vBase); }