コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }