private void panel_CellList_Paint(object sender, PaintEventArgs e) { //DrawCells自力描画でがんばる //描画開始番号 //Selectedは枠色で表現?網かけ? int cnt = 0; //初期インデックス int bSize = FormImageCut.WIDTH_THUMS; //BoxSize //int drawXPos = 0;//描画横幅累計 コンポーネント横幅まで描画 //int drawYPos = 0;// int cvx = panel_CellList.Width / bSize; //横に並ぶ数 int cvy = panel_CellList.Height / bSize; //縦に並ぶ数 //this.mListCutImage.Count / cx; if (this.mListCutImage.Count <= 0) { return; } e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; //サムネイル表示はセレクトの関係から縦横固定サイズが望ましい for (int cy = 0; cy < cvy; cy++) { for (int cx = 0; cx < cvx; cx++) { if (cnt < this.mListCutImage.Count) { ClsDatCutImage clDatCutImage = this.mListCutImage[cnt]; if (clDatCutImage == null) { Console.Out.Write("CellImage is Null"); return; } //Thumbnail Resize float rw = (float)bSize / clDatCutImage.mImage.Width; float rh = (float)bSize / clDatCutImage.mImage.Height; float rf = Math.Min(rw, rh); Point ds = new Point((int)(clDatCutImage.mImage.Width * rf), (int)(clDatCutImage.mImage.Height * rf)); e.Graphics.DrawImage(clDatCutImage.mImage, (cx * bSize) + (bSize / 2 - (ds.X / 2)), (cy * bSize) + (bSize / 2 - (ds.Y / 2)), ds.X, ds.Y); //DrawFlame if (this.mListCutImage[cnt].mSelect) { e.Graphics.DrawRectangle(Pens.GreenYellow, new Rectangle(cx * bSize, cy * bSize, bSize - 1, bSize - 1)); } else { e.Graphics.DrawRectangle(Pens.Brown, new Rectangle(cx * bSize, cy * bSize, bSize - 1, bSize - 1)); } } cnt++; } } }
private void button_Cut_Click(object sender, EventArgs e) { //Start>End Swap int wrk = 0; if (mPosStart.X > mPosEnd.X) { wrk = mPosStart.X; mPosStart.X = mPosEnd.X; mPosEnd.X = wrk; } if (mPosStart.Y > mPosEnd.Y) { wrk = mPosStart.Y; mPosStart.Y = mPosEnd.Y; mPosEnd.Y = wrk; } //保護クリップ if (mPosStart.X < 0) { mPosStart.X = 0; } if (mPosStart.Y < 0) { mPosStart.Y = 0; } if (mPosEnd.X > mImage.Width) { mPosEnd.X = mImage.Width; } if (mPosEnd.Y > mImage.Height) { mPosEnd.Y = mImage.Height; } Size wh = new Size((mPosEnd.X - mPosStart.X), (mPosEnd.Y - mPosStart.Y)); Rectangle r = new Rectangle(mPosStart, wh); //以下、イメージ切り取り処理 Bitmap clBmpSrc = new Bitmap(this.mImage); ClsDatCutImage clDatCutImage = new ClsDatCutImage(); clDatCutImage.mImage = clBmpSrc.Clone(r, clBmpSrc.PixelFormat); clDatCutImage.mSelect = false; clDatCutImage.mX = r.X; clDatCutImage.mY = r.Y; clDatCutImage.mW = r.Width; clDatCutImage.mH = r.Height; this.mListCutImage.Add(clDatCutImage); this.panel_CellList.Height = (this.mListCutImage.Count / (panel_CellList.Width / FormImageCut.WIDTH_THUMS)) * FormImageCut.WIDTH_THUMS; this.splitContainerBase.Panel2.Refresh(); }
private void button_Clear_Click(object sender, EventArgs e) { //全セルの削除 int inCnt, inMax = this.mListCutImage.Count; for (inCnt = 0; inCnt < inMax; inCnt++) { ClsDatCutImage clDatCutImage = this.mListCutImage[inCnt]; clDatCutImage.Remove(); } this.mListCutImage.Clear(); splitContainerBase.Refresh(); }
//CEll削除 セレクトしたもののみ削除 private void button_CellDelete_Click(object sender, EventArgs e) { int inCnt, inMax = this.mListCutImage.Count; for (inCnt = inMax - 1; inCnt >= 0; inCnt--) { ClsDatCutImage clDatCutImage = this.mListCutImage[inCnt]; if (!clDatCutImage.mSelect) { continue; } clDatCutImage.Remove(); this.mListCutImage.RemoveAt(inCnt); } this.splitContainerBase.Refresh(); }
private void button_Cut_Click(object sender, EventArgs e) { List <int> clListIndex = ClsSystem.GetImageSelectIndex(); if (clListIndex.Count <= 0) { return; } //以下、元画像取得処理 int inSelectKey = clListIndex[0]; ClsDatImage clDatImageSrc = ClsSystem.mDicImage[inSelectKey]; //以下、イメージカットウィンドウ表示処理 FormImageCut clFormImageCut = new FormImageCut(this.mFormMain, clDatImageSrc.mImgOrigin, clDatImageSrc.mPath); DialogResult enResult = clFormImageCut.ShowDialog(); if (enResult == DialogResult.OK) { int inCnt, inMax = clFormImageCut.mListCutImage.Count; for (inCnt = 0; inCnt < inMax; inCnt++) { //以下、画像登録処理 ClsDatCutImage clDatCutImage = clFormImageCut.mListCutImage[inCnt]; int inKey = ClsSystem.CreateImageFromImage(clDatCutImage.mImage); //以下、カット画像管理クラスにカット情報を登録する処理 ClsDatImage clDatImage = ClsSystem.mDicImage[inKey]; clDatImage.mPath = clDatImageSrc.mPath; clDatImage.mRect = new ClsDatRect(clDatCutImage.mX, clDatCutImage.mY, clDatCutImage.mW, clDatCutImage.mH); } } clFormImageCut.Close(); clFormImageCut.Dispose(); clFormImageCut = null; //以下、リフレッシュ処理 this.Refresh(); }