示例#1
0
        //────────────────────────────────────────

        public void Save(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            if (null != infodisplay.MemorySprite.Bitmap)
            {
                Bitmap bm = new Function4Save1bImpl().CreateSaveImage(
                    infodisplay,
                    pcchkInfo,
                    uc_FrameMemo
                    );



                // ファイル名を適当に作成。
                StringBuilder s = new StringBuilder();
                {
                    s.Append(Application.StartupPath);
                    s.Append("\\ScreenShot\\");

                    DateTime now = System.DateTime.Now;
                    s.Append(now.Year);
                    s.Append("_");
                    s.Append(now.Month);
                    s.Append("_");
                    s.Append(now.Day);
                    s.Append("_");
                    s.Append(now.Hour);
                    s.Append("_");
                    s.Append(now.Minute);
                    s.Append("_");
                    s.Append(now.Second);
                    s.Append("_");
                    s.Append(now.Millisecond);
                    s.Append(".png");
                }

                // .exeの入っているフォルダーに ScreenShot フォルダーを置くこと。
                bm.Save(s.ToString(), System.Drawing.Imaging.ImageFormat.Png);
            }
        }
示例#2
0
        //────────────────────────────────────────
        public void Save(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            if (null != infodisplay.MemorySprite.Bitmap)
            {

                Bitmap bm = new Function4Save1bImpl().CreateSaveImage(
                    infodisplay,
                    pcchkInfo,
                    uc_FrameMemo
                    );

                // ファイル名を適当に作成。
                StringBuilder s = new StringBuilder();
                {
                    s.Append(Application.StartupPath);
                    s.Append("\\ScreenShot\\");

                    DateTime now = System.DateTime.Now;
                    s.Append(now.Year);
                    s.Append("_");
                    s.Append(now.Month);
                    s.Append("_");
                    s.Append(now.Day);
                    s.Append("_");
                    s.Append(now.Hour);
                    s.Append("_");
                    s.Append(now.Minute);
                    s.Append("_");
                    s.Append(now.Second);
                    s.Append("_");
                    s.Append(now.Millisecond);
                    s.Append(".png");
                }

                // .exeの入っているフォルダーに ScreenShot フォルダーを置くこと。
                bm.Save(s.ToString(), System.Drawing.Imaging.ImageFormat.Png);
            }
        }
示例#3
0
        //────────────────────────────────────────
        /// <summary>
        /// 保存する画像の作成。
        /// </summary>
        public Bitmap CreateSaveImage(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            Bitmap bm;

            if (null != infodisplay.MemorySprite.Bitmap)
            {

                // 情報領域
                int infoHeight;
                {
                    int infoRows = infodisplay.InfoRows;
                    int nHeightMargin = 8 + 4;
                    int nFontSize = 16;
                    infoHeight = infoRows * nFontSize + nHeightMargin;
                }

                {
                    // 情報欄のサイズ
                    SizeF infoSizeF;
                    if (pcchkInfo.Checked)
                    {
                        //
                        // 情報表示時
                        //

                        bm = new Bitmap(1, 1);
                        //ダミーのGraphicsオブジェクトを取得
                        Graphics dammy_g = Graphics.FromImage(bm);

                        infoSizeF = dammy_g.MeasureString(infodisplay.ToString_FileName(), infodisplay.Font);
                        // すぐ、Graphicsを廃棄。
                        dammy_g.Dispose();
                        // 横幅を 4px 大きく取る。
                        infoSizeF.Width += 4;
                    }
                    else
                    {
                        infoSizeF = new SizeF();
                    }

                    // 新規画像サイズ。
                    int w;
                    int h;
                    if (infodisplay.MemorySprite.IsCrop)
                    {
                        w = (int)infodisplay.MemorySprite.WidthcellResult;
                        h = (int)infodisplay.MemorySprite.HeightcellResult;
                    }
                    else
                    {
                        w = infodisplay.MemorySprite.Bitmap.Width;
                        h = infodisplay.MemorySprite.Bitmap.Height;
                    }

                    if (pcchkInfo.Checked)
                    {
                        // 横幅の最低値
                        int minW = (int)infoSizeF.Width;
                        if (w < minW)
                        {
                            w = minW;
                        }
                    }

                    // 横幅の上限(画像の横幅、または画像の横幅が300未満の場合、300)
                    {
                        int maxW;
                        if (300 <= infodisplay.MemorySprite.Bitmap.Width)
                        {
                            maxW = infodisplay.MemorySprite.Bitmap.Width;
                        }
                        else
                        {
                            maxW = 300;
                        }

                        if (maxW < w)
                        {
                            w = maxW;
                        }
                    }

                    // 縦幅
                    if (pcchkInfo.Checked)
                    {
                        h += infoHeight;
                    }

                    bm = new Bitmap(w, h);
                }

                //imgのGraphicsオブジェクトを取得
                Graphics g = Graphics.FromImage(bm);

                try
                {
                    // 背景色(自動の場合は、塗りつぶさない)
                    if (uc_FrameMemo.BackColor != SystemColors.Control)
                    {
                        g.FillRectangle(new SolidBrush(uc_FrameMemo.BackColor), 0, 0, bm.Width, bm.Height);
                    }

                    float baseX = 0;
                    float baseY = 0;
                    if (pcchkInfo.Checked)
                    {
                        baseY += infoHeight;
                    }

                    uc_FrameMemo.PaintSprite(
                        g,
                        false,
                        baseX,
                        baseY,
                        1.0F
                        );//等倍
                }
                finally
                {
                    g.Dispose();
                }
            }
            else
            {
                bm = null;
            }

            return bm;
        }
示例#4
0
        //────────────────────────────────────────
        public void Save(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            if (null != infodisplay.MemorySprite.Bitmap)
            {

                // 列数と行数。
                int nCols = (int)infodisplay.MemorySprite.CountcolumnResult;
                int nRows = (int)infodisplay.MemorySprite.CountrowResult;

                // ファイル名の頭。
                StringBuilder s1 = new StringBuilder();
                {
                    s1.Append(Application.StartupPath);
                    s1.Append("\\ScreenShot\\");

                    DateTime now = System.DateTime.Now;
                    s1.Append(now.Year);
                    s1.Append("_");
                    s1.Append(now.Month);
                    s1.Append("_");
                    s1.Append(now.Day);
                    s1.Append("_");
                    s1.Append(now.Hour);
                    s1.Append("_");
                    s1.Append(now.Minute);
                    s1.Append("_");
                    s1.Append(now.Second);
                    s1.Append("_");
                    s1.Append(now.Millisecond);
                }

                for (int nRow = 1; nRow <= nRows; nRow++)
                {
                    for (int nCol = 1; nCol <= nCols; nCol++)
                    {
                        int nCell = (nRow - 1) * nCols + nCol;
                        System.Console.WriteLine("r" + nRow + " c" + nCol + " nCell" + nCell + "  nRows" + nRows + " nCols" + nCols);

                        uc_FrameMemo.Usercontrol_FrameParam.PctxtCropForce.Text = nCell.ToString();

                        Bitmap bm = new Function4Save1bImpl().CreateSaveImage(
                            infodisplay,
                            pcchkInfo,
                            uc_FrameMemo
                            );

                        // ファイル名を適当に作成。
                        StringBuilder s = new StringBuilder();
                        {
                            s.Append(s1.ToString());
                            s.Append("_c");
                            s.Append(nCell.ToString());
                            s.Append(".png");
                        }

                        // .exeの入っているフォルダーに ScreenShot フォルダーを置くこと。
                        bm.Save(s.ToString(), System.Drawing.Imaging.ImageFormat.Png);

                    }
                }

            }
        }
示例#5
0
        //────────────────────────────────────────

        /// <summary>
        /// 保存する画像の作成。
        /// </summary>
        public Bitmap CreateSaveImage(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            Bitmap bm;

            if (null != infodisplay.MemorySprite.Bitmap)
            {
                // 情報領域
                int infoHeight;
                {
                    int infoRows      = infodisplay.InfoRows;
                    int nHeightMargin = 8 + 4;
                    int nFontSize     = 16;
                    infoHeight = infoRows * nFontSize + nHeightMargin;
                }


                {
                    // 情報欄のサイズ
                    SizeF infoSizeF;
                    if (pcchkInfo.Checked)
                    {
                        //
                        // 情報表示時
                        //

                        bm = new Bitmap(1, 1);
                        //ダミーのGraphicsオブジェクトを取得
                        Graphics dammy_g = Graphics.FromImage(bm);

                        infoSizeF = dammy_g.MeasureString(infodisplay.ToString_FileName(), infodisplay.Font);
                        // すぐ、Graphicsを廃棄。
                        dammy_g.Dispose();
                        // 横幅を 4px 大きく取る。
                        infoSizeF.Width += 4;
                    }
                    else
                    {
                        infoSizeF = new SizeF();
                    }



                    // 新規画像サイズ。
                    int w;
                    int h;
                    if (infodisplay.MemorySprite.IsCrop)
                    {
                        w = (int)infodisplay.MemorySprite.WidthcellResult;
                        h = (int)infodisplay.MemorySprite.HeightcellResult;
                    }
                    else
                    {
                        w = infodisplay.MemorySprite.Bitmap.Width;
                        h = infodisplay.MemorySprite.Bitmap.Height;
                    }

                    if (pcchkInfo.Checked)
                    {
                        // 横幅の最低値
                        int minW = (int)infoSizeF.Width;
                        if (w < minW)
                        {
                            w = minW;
                        }
                    }

                    // 横幅の上限(画像の横幅、または画像の横幅が300未満の場合、300)
                    {
                        int maxW;
                        if (300 <= infodisplay.MemorySprite.Bitmap.Width)
                        {
                            maxW = infodisplay.MemorySprite.Bitmap.Width;
                        }
                        else
                        {
                            maxW = 300;
                        }

                        if (maxW < w)
                        {
                            w = maxW;
                        }
                    }

                    // 縦幅
                    if (pcchkInfo.Checked)
                    {
                        h += infoHeight;
                    }

                    bm = new Bitmap(w, h);
                }

                //imgのGraphicsオブジェクトを取得
                Graphics g = Graphics.FromImage(bm);

                try
                {
                    // 背景色(自動の場合は、塗りつぶさない)
                    if (uc_FrameMemo.BackColor != SystemColors.Control)
                    {
                        g.FillRectangle(new SolidBrush(uc_FrameMemo.BackColor), 0, 0, bm.Width, bm.Height);
                    }

                    float baseX = 0;
                    float baseY = 0;
                    if (pcchkInfo.Checked)
                    {
                        baseY += infoHeight;
                    }

                    uc_FrameMemo.PaintSprite(
                        g,
                        false,
                        baseX,
                        baseY,
                        1.0F
                        );//等倍
                }
                finally
                {
                    g.Dispose();
                }
            }
            else
            {
                bm = null;
            }


            return(bm);
        }
示例#6
0
        //────────────────────────────────────────

        public void Save(
            Usercontrolview_Infodisplay infodisplay,
            CheckBox pcchkInfo,
            Usercontrol_Canvas uc_FrameMemo
            )
        {
            if (null != infodisplay.MemorySprite.Bitmap)
            {
                // 列数と行数。
                int nCols = (int)infodisplay.MemorySprite.CountcolumnResult;
                int nRows = (int)infodisplay.MemorySprite.CountrowResult;

                // ファイル名の頭。
                StringBuilder s1 = new StringBuilder();
                {
                    s1.Append(Application.StartupPath);
                    s1.Append("\\ScreenShot\\");

                    DateTime now = System.DateTime.Now;
                    s1.Append(now.Year);
                    s1.Append("_");
                    s1.Append(now.Month);
                    s1.Append("_");
                    s1.Append(now.Day);
                    s1.Append("_");
                    s1.Append(now.Hour);
                    s1.Append("_");
                    s1.Append(now.Minute);
                    s1.Append("_");
                    s1.Append(now.Second);
                    s1.Append("_");
                    s1.Append(now.Millisecond);
                }


                for (int nRow = 1; nRow <= nRows; nRow++)
                {
                    for (int nCol = 1; nCol <= nCols; nCol++)
                    {
                        int nCell = (nRow - 1) * nCols + nCol;
                        System.Console.WriteLine("r" + nRow + " c" + nCol + " nCell" + nCell + "  nRows" + nRows + " nCols" + nCols);


                        uc_FrameMemo.Usercontrol_FrameParam.PctxtCropForce.Text = nCell.ToString();

                        Bitmap bm = new Function4Save1bImpl().CreateSaveImage(
                            infodisplay,
                            pcchkInfo,
                            uc_FrameMemo
                            );



                        // ファイル名を適当に作成。
                        StringBuilder s = new StringBuilder();
                        {
                            s.Append(s1.ToString());
                            s.Append("_c");
                            s.Append(nCell.ToString());
                            s.Append(".png");
                        }

                        // .exeの入っているフォルダーに ScreenShot フォルダーを置くこと。
                        bm.Save(s.ToString(), System.Drawing.Imaging.ImageFormat.Png);
                    }
                }
            }
        }