示例#1
0
        public async Task <IActionResult> Create([FromBody] CreateSystemScreenViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            SystemScreen systemScreen = new SystemScreen
            {
                Description = model.Description,
                Enabled     = model.Enabled,
                Entity      = model.Entity,
                Icon        = model.Icon,
                IsDefault   = model.IsDefault,
                Orden       = model.Orden,
                ParentId    = model.ParentId,
                Path        = model.Path
            };


            _context.SystemScreen.Add(systemScreen);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch
            {
                return(BadRequest());
            }

            return(Ok(systemScreen.Id));
        }
示例#2
0
 public static void AddScreen(SystemScreen screen)
 {
     switch (screen)
     {
         case SystemScreen.PauseScreen:
             ScreenManager.activeScreens.Add(ScreenManager.systemScreens[SystemScreen.PauseScreen]);
             ScreenManager.currentScreen = ScreenManager.systemScreens[SystemScreen.PauseScreen];
             ScreenManager.popupCount++;
             ScreenManager.modalCount++;
             break;
     }
 }
示例#3
0
        public static void PopBackTo(SystemScreen screen)
        {
            switch (screen)
            {
            case SystemScreen.MenuScreen:
                for (int i = ScreenManager.activeScreens.Count - 1; i >= 0; i--)
                {
                    ScreenManager.activeScreens[i].UnloadContent();
                    ScreenManager.activeScreens.RemoveAt(i);
                }

                ScreenManager.CurrentScreen = ScreenManager.systemScreens[SystemScreen.MenuScreen];
                break;
            }
        }
示例#4
0
        private static GameScreen AddSystemScreen(SystemScreen screenType)
        {
            GameScreen systemScreen = null;
            GameScreen tempScreen   = null;

            try
            {
                switch (screenType)
                {
                case SystemScreen.MenuScreen:
                    tempScreen = new MenuScreen();
                    break;

                case SystemScreen.PauseScreen:
                    tempScreen = new PauseScreen();
                    break;

                case SystemScreen.OptionsScreen:
                    tempScreen = new OptionsScreen();
                    break;

                case SystemScreen.ExtrasScreen:
                    tempScreen = new ExtrasScreen();
                    break;
                }

                tempScreen.InitializeScreen(ScreenManager.GraphicsDevice);
                tempScreen.LoadScreenContent();
                systemScreen = tempScreen;
                tempScreen   = null;
            }
            catch (NullReferenceException)
            {
            }
            finally
            {
                if (tempScreen != null)
                {
                    tempScreen.Dispose();
                }
            }

            return(systemScreen);
        }
        /// <summary>
        /// 将视觉元素的呈现内容以图片的形式保存
        /// </summary>
        /// <param name="element"></param>
        /// <param name="stream"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        public static void SaveImage(this FrameworkElement element, Stream stream, bool undoTransformation = true)
        {
            var dpi = SystemScreen.DPI;
            //得到像素大小
            int width  = SystemScreen.GetPhysicalWidth((int)element.Width);
            int height = SystemScreen.GetPhysicalHeight((int)element.Height);

            RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, dpi.X, dpi.Y, PixelFormats.Pbgra32);

            if (undoTransformation)
            {
                //以下代码是消除组件被转换过的(比如旋转,比例缩放,或是平移之类)影响
                DrawingVisual dv = new DrawingVisual();
                using (DrawingContext dc = dv.RenderOpen())
                {
                    VisualBrush vb = new VisualBrush(element);
                    dc.DrawRectangle(vb, null, new Rect(new System.Windows.Point(), new System.Windows.Size(element.Width, element.Height)));
                }
                rtb.Render(dv);
            }
            else
            {
                rtb.Render(element);
            }

            using (MemoryStream ms = new MemoryStream())
            {
                BmpBitmapEncoder encoder = new BmpBitmapEncoder();
                var frame = BitmapFrame.Create(rtb);
                encoder.Frames.Add(frame);
                encoder.Save(ms);

                Compress(ms, stream, width, height);
            }


            GC.Collect(); //一定要调用该方法,否则内存泄露,encoder.Save(stream); 方法引起的内存损耗
        }
示例#6
0
        public static void AddScreen(SystemScreen screen)
        {
            switch (screen)
            {
            case SystemScreen.PauseScreen:
                ScreenManager.activeScreens.Add(ScreenManager.systemScreens[SystemScreen.PauseScreen]);
                ScreenManager.currentScreen = ScreenManager.systemScreens[SystemScreen.PauseScreen];
                ScreenManager.popupCount++;
                ScreenManager.modalCount++;
                break;

            case SystemScreen.OptionsScreen:
                ScreenManager.activeScreens.Add(ScreenManager.systemScreens[SystemScreen.OptionsScreen]);
                ScreenManager.currentScreen = ScreenManager.systemScreens[SystemScreen.OptionsScreen];
                ScreenManager.modalCount++;
                break;

            case SystemScreen.ExtrasScreen:
                ScreenManager.activeScreens.Add(ScreenManager.systemScreens[SystemScreen.ExtrasScreen]);
                ScreenManager.currentScreen = ScreenManager.systemScreens[SystemScreen.ExtrasScreen];
                ScreenManager.modalCount++;
                break;
            }
        }
示例#7
0
        private static GameScreen AddSystemScreen(SystemScreen screenType)
        {
            GameScreen systemScreen = null;
            GameScreen tempScreen = null;
            try
            {
                switch (screenType)
                {
                    case SystemScreen.MenuScreen:
                        tempScreen = new MenuScreen();
                        break;

                    case SystemScreen.PauseScreen:
                        tempScreen = new PauseScreen();
                        break;
                }

                tempScreen.Initialize(ScreenManager.GraphicsDevice);
                tempScreen.LoadContent();
                systemScreen = tempScreen;
                tempScreen = null;
            }
            finally
            {
                if (tempScreen != null)
                {
                    tempScreen.Dispose();
                }
            }

            return systemScreen;
        }
示例#8
0
 public static void PopBackTo(SystemScreen screen)
 {
     switch (screen)
     {
         case SystemScreen.MenuScreen:
             ScreenManager.UnloadContent();
             ScreenManager.CurrentScreen = ScreenManager.systemScreens[SystemScreen.MenuScreen];
             break;
     }
 }
 // width = 389
 public PlanetScreenAlign(SystemScreen parentScreen, int planetId, int width = 550, int height = 293, int leftMargin = 2, int topMargin = 0, int rightMargin = 0, int bottomMargin = 0) : base(width, height, leftMargin, topMargin, rightMargin, bottomMargin)
 {
     this.parentScreen = parentScreen;
 }
示例#10
0
        public async Task <IActionResult> Update([FromBody] List <UpdateSystemScreenViewModel> listmodel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            List <SystemScreen> screensUpdate = new List <SystemScreen>();
            List <SystemScreen> screensAdd    = new List <SystemScreen>();
            List <SystemScreen> screensRemove = new List <SystemScreen>();

            //Actualiza masivamente
            foreach (var item in listmodel)
            {
                if (item.Id == null && item.IsNew == true)
                {
                    SystemScreen systemScreen = new SystemScreen
                    {
                        Description = item.Description,
                        Enabled     = item.Enabled,
                        Entity      = item.Entity,
                        Icon        = item.Icon,
                        IsDefault   = item.IsDefault,
                        Orden       = item.Orden ?? 99,
                        ParentId    = item.ParentId,
                        Path        = item.Path
                    };
                    screensAdd.Add(systemScreen);
                }
                else
                {
                    //Si no es a borrar, el modelo
                    //SystemScreen systemScreen = _context.SystemScreen.Find(item.Id);


                    //Ahora me fijo si lo elimino o lo actualizo
                    if (item.IsRemoved)
                    {
                        SystemScreen systemScreen = _context.SystemScreen.Where(x => x.Id == item.Id).Include(x => x.SystemScreenFields).Include(x => x.SystemActions).FirstOrDefault();
                        screensRemove.Add(systemScreen);
                    }

                    else
                    {
                        SystemScreen systemScreen = _context.SystemScreen.Find(item.Id);//Es mas rapido
                        systemScreen.Description = item.Description;
                        systemScreen.Enabled     = item.Enabled;
                        systemScreen.Entity      = item.Entity;
                        systemScreen.Icon        = item.Icon;
                        systemScreen.IsDefault   = item.IsDefault;
                        systemScreen.Orden       = item.Orden ?? 99;
                        systemScreen.ParentId    = item.ParentId;
                        systemScreen.Path        = item.Path;
                        screensUpdate.Add(systemScreen);
                    }
                }
            }

            //Agrego
            _context.SystemScreen.AddRange(screensAdd);
            //Actualizo
            _context.SystemScreen.UpdateRange(screensUpdate);
            //Borro
            //Primero borro las dependencias
            foreach (var item in screensRemove)
            {
                if (item.SystemScreenFields != null)
                {
                    _context.SystemScreenField.RemoveRange(item.SystemScreenFields);
                }
                if (item.SystemActions != null)
                {
                    _context.SystemAction.RemoveRange(item.SystemActions);
                }
            }
            _context.SystemScreen.RemoveRange(screensRemove);


            try
            {
                await _context.SaveChangesAsync();
            }
            catch
            {
                return(BadRequest());
            }

            return(Ok());
        }