Пример #1
0
        /// <summary>
        /// TheApp.app.config.BoardImageVersionの設定が変わったときに画像を読み込む。
        /// </summary>
        public void UpdateBoardImage(PropertyChangedEventArgs args = null)
        {
            var config     = TheApp.app.config;
            var board      = new ImageLoader();
            var tatami     = new ImageLoader();
            var komadai    = new ImageLoader();
            var name_plate = new ImageLoader();

            Load(ref board, $"board_v{config.BoardImageVersion}_1920_1080.png");
            Load(ref tatami, $"tatami_v{config.TatamiImageVersion}_1920_1080.png");
            Load(ref komadai, $"komadai_v{config.KomadaiImageVersion}_1920_1080.png");
            Load(ref name_plate, "name_plate_v1_1920_1080.png");

            BoardImage.CreateBitmap(1920, 1080, PixelFormat.Format24bppRgb);

            // 畳と盤を合成する。
            using (var g = Graphics.FromImage(BoardImage.image))
            {
                var rect = new Rectangle(0, 0, BoardImage.image.Width, BoardImage.image.Height);
                // DrawImageで等倍の転送にするためにはrectの指定が必要
                g.DrawImage(tatami.image, rect, rect, GraphicsUnit.Pixel);
                g.DrawImage(board.image, rect, rect, GraphicsUnit.Pixel);
                g.DrawImage(komadai.image, rect, rect, GraphicsUnit.Pixel);
                if (config.KomadaiImageVersion == 1)
                {
                    g.DrawImage(name_plate.image, rect, rect, GraphicsUnit.Pixel);
                }
                // 駒台が縦長のとき、ネームプレートは別の素材
            }

            // しばらく使わないと思うので開放しておく
            board.Release();
            tatami.Release();
        }
Пример #2
0
        public ControlWrapper GetCandy()
        {
            ControlWrapper cw    = new ControlWrapper();
            BoardImage     image = new BoardImage();

            cw.Protect(image);
            return(cw);
        }
Пример #3
0
        /// <summary>
        /// TheApp.app.config.BoardImageVersionの設定が変わったときに画像を読み込む。
        /// </summary>
        public void UpdateBoardImage(PropertyChangedEventArgs args = null)
        {
            var config     = TheApp.app.config;
            var board      = new ImageLoader();
            var tatami     = new ImageLoader();
            var komadai    = new ImageLoader();
            var name_plate = new ImageLoader();
            var koma_box   = new ImageLoader();

            Load(ref board, $"board_v{config.BoardImageVersion}_1920_1080.png");
            Load(ref tatami, $"tatami_v{config.TatamiImageVersion}_1920_1080.png");
            Load(ref komadai, $"komadai_v{config.KomadaiImageVersion}_1920_1080.png");
            Load(ref name_plate, "name_plate_v1_1920_1080.png");

            // 盤面編集に切り替えるごとにBGの再生成、無駄すぎない?
            // 同じファイルの読み込みだから、さほど時間かからないっぽいので(SSDなら)、まあいいか。

            // 盤面編集モードであるなら駒箱を合成。
            if (config.InTheBoardEdit)
            {
                Load(ref koma_box, $"koma_bako_v{config.KomadaiImageVersion}_1920_1080.png");
            }

            BoardImage.CreateBitmap(1920, 1080, PixelFormat.Format24bppRgb);

            // 畳と盤を合成する。
            using (var g = Graphics.FromImage(BoardImage.image))
            {
                var rect = new Rectangle(0, 0, BoardImage.image.Width, BoardImage.image.Height);
                // DrawImageで等倍の転送にするためにはrectの指定が必要
                g.DrawImage(tatami.image, rect, rect, GraphicsUnit.Pixel);
                g.DrawImage(board.image, rect, rect, GraphicsUnit.Pixel);
                g.DrawImage(komadai.image, rect, rect, GraphicsUnit.Pixel);

                // 駒台が縦長のとき、ネームプレートは別の素材
                if (config.KomadaiImageVersion == 1)
                {
                    g.DrawImage(name_plate.image, rect, rect, GraphicsUnit.Pixel);
                }

                // 駒箱を合成するのは盤面編集モードの時のみ
                if (config.InTheBoardEdit)
                {
                    g.DrawImage(koma_box.image, rect, rect, GraphicsUnit.Pixel);
                }
            }

            // しばらく使わないと思うので開放しておく
            board.Release();
            tatami.Release();
        }
Пример #4
0
        // GET: /BoardImages/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BoardImage boardImage = db.BoardImages.Find(id);

            if (boardImage == null)
            {
                return(HttpNotFound());
            }
            return(View(boardImage));
        }
Пример #5
0
        public void TestMethod1()
        {
            var target = new BoardImage();
            var board  = new Board(new Box[] {
                new Box(1, new Position(2, 3)),
                new Box(2, new Position(3, 3)),
                new Box(3, new Position(2, 2)),
                new Box(4, new Position(2, 1))
            });

            var image = target.CreateBitmap(board);

            image.Save("Test.bmp");
        }
Пример #6
0
        private static BoardImage BuildBoardImage(PegBoard board, int arrSize, PegBoard.Outcome outcome)
        {
            BoardImage boardImage = new BoardImage();

            boardImage.BoardId  = arrSize.ToString("0000#");
            boardImage.Outcome  = outcome.ToString();
            boardImage.PegHoles = board.PegHoles;

            // list of moves
            List <string> moveList = new List <string>();

            foreach (var move in board.Moves)
            {
                moveList.Add(move.ToString());
            }
            boardImage.Moves = moveList;
            return(boardImage);
        }
Пример #7
0
        public ActionResult DeleteConfirmed(int id)
        {
            BoardImage boardImage = db.BoardImages.Find(id);
            var        boardId    = boardImage.BoardID;

            // get the filename
            var fileName = Path.GetFileName(boardImage.Image);

            // get the path to the file
            var path = Path.Combine(Server.MapPath("~/Images/Boards"), fileName);

            // delete the file
            try
            {
                if (System.IO.File.Exists(path))
                {
                    System.IO.File.Delete(path);
                }
            }
            catch (Exception)
            {
                ModelState.AddModelError("uploadError", "Can't delete the file.");
            }


            db.BoardImages.Remove(boardImage);

            // Also update the Board modified info
            Board board = db.Boards.Find(boardId);

            board.ModifiedBy   = User.Identity.Name;
            board.DateModified = DateTime.Now;

            db.Entry(board).State = EntityState.Modified;

            db.SaveChanges();

            var redirectURL = "../../Boards/Edit/" + boardId + "#images";

            return(Redirect(redirectURL));
        }
Пример #8
0
        void InitVisual()
        {
            if (Board == null)
            {
                return;
            }
            this.Height = Board.Size.Height;
            this.Width  = Board.Size.Width;

            foreach (DesignerControl cd in Board.VisualChildren)
            {
                switch (cd.ControlType)
                {
                case DesignerControlType.Image:
                    BoardImage bi = new BoardImage(cd as DesignerImage);
                    Add(bi, cd);
                    break;

                case DesignerControlType.GIF:
                    BoardGif bg = new BoardGif(cd as DesignerGif);
                    Add(bg, cd);
                    break;

                case DesignerControlType.Label:
                    BoardLabel bl = new BoardLabel(cd as DesignerLabel);
                    Add(bl, cd);
                    break;

                case DesignerControlType.Table:
                    BoardDataGrid bdg = new BoardDataGrid(cd as DesignerTable);
                    Add(bdg, cd);
                    break;

                case DesignerControlType.Chart:
                    BoardChart bc = new BoardChart(cd as DesignerChart);
                    Add(bc, cd);
                    break;

                case DesignerControlType.Media:
                    BoardMediaPlayer bmp = new BoardMediaPlayer(cd as DesignerMedia);
                    Add(bmp, cd);
                    break;

                case DesignerControlType.Clock:
                    BoardClock clock = new BoardClock(cd as DesignerClock);
                    Add(clock, cd);
                    break;

                case DesignerControlType.DynamicLabel:
                    BoardDynamicLabel dlb = new BoardDynamicLabel(cd as DesignerDynamicLabel);
                    Add(dlb, cd);
                    break;

                case DesignerControlType.Processbar:
                    BoardProcessbar bpd = new BoardProcessbar(cd as DesignerProcessbar);
                    Add(bpd, cd);
                    break;

                default: break;
                }
            }
        }
Пример #9
0
        public ActionResult Create([Bind(Include = "ID,BoardID,Title,Image,ImageDate,DisplayOrder")] BoardImage boardImage, HttpPostedFileBase file)
        {
            var redirectURL = "../Boards/Edit/" + boardImage.BoardID + "#images";

            // If the page is reloaded with an error message from below, the BoardID is lost in the querystring
            // so save the BoardID in the ViewBag to use in those cases
            ViewBag.BoardID = boardImage.BoardID;

            // if file's content length is zero or no files submitted
            if (Request.Files.Count != 1 || Request.Files[0].ContentLength == 0)
            {
                ModelState.AddModelError("uploadError", "Please select an image to upload.");
                return(View(boardImage));
            }

            // check the file size (max 4 Mb)
            if (Request.Files[0].ContentLength > 1024 * 1024 * 4)
            {
                ModelState.AddModelError("uploadError", "File size can't exceed 4 MB");
                return(View(boardImage));
            }

            // check file extension
            string extension = Path.GetExtension(Request.Files[0].FileName).ToLower();

            if (extension != ".jpg" && extension != ".jpeg" && extension != ".gif" && extension != ".png")
            {
                ModelState.AddModelError("uploadError", "Supported file extensions: jpg, jpeg, gif, png");
                return(View(boardImage));
            }

            // extract only the filename
            var fileName = Path.GetFileName(file.FileName);

            // store the file inside ~/Images folder
            var path = Path.Combine(Server.MapPath("~/Images/Boards/"), fileName);

            try
            {
                if (!System.IO.File.Exists(path))
                {
                    Request.Files[0].SaveAs(path);
                    //System.IO.File.Delete(path);
                }
                else
                {
                    ModelState.AddModelError("uploadError", "An image with that name already exists.  Please rename your image.");
                    return(View(boardImage));
                }
            }
            catch (Exception)
            {
                ModelState.AddModelError("uploadError", "Can't save file to disk");
            }


            if (ModelState.IsValid)
            {
                // Add the Board Image
                boardImage.Image = file.FileName;

                db.BoardImages.Add(boardImage);

                // Also update the Board modified info
                Board board = db.Boards.Find(boardImage.BoardID);
                board.ModifiedBy   = User.Identity.Name;
                board.DateModified = DateTime.Now;

                db.Entry(board).State = EntityState.Modified;

                db.SaveChanges();

                return(Redirect(redirectURL));
            }

            return(Redirect(redirectURL));
        }
Пример #10
0
        public UserControl GetCandy(DesignerControl control)
        {
            BoardImage bf = new BoardImage(control as DesignerImage);

            return(bf);
        }
Пример #11
0
 public async Task RemoveImage(BoardImage image)
 {
     _context.BoardImages.Remove(image);
     await _context.SaveChangesAsync();
 }
Пример #12
0
 public async Task AddImage(BoardImage image)
 {
     _context.BoardImages.Add(image);
     await _context.SaveChangesAsync();
 }