/// <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(); }
public ControlWrapper GetCandy() { ControlWrapper cw = new ControlWrapper(); BoardImage image = new BoardImage(); cw.Protect(image); return(cw); }
/// <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(); }
// 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)); }
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"); }
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); }
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)); }
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; } } }
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)); }
public UserControl GetCandy(DesignerControl control) { BoardImage bf = new BoardImage(control as DesignerImage); return(bf); }
public async Task RemoveImage(BoardImage image) { _context.BoardImages.Remove(image); await _context.SaveChangesAsync(); }
public async Task AddImage(BoardImage image) { _context.BoardImages.Add(image); await _context.SaveChangesAsync(); }