Exemple #1
0
        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++;
                }
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        //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();
        }
Exemple #5
0
        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();
        }