画面キャプチャのフリーソフトに目からウロコ、自作してみた。

20161125

Logging


画面キャプチャのフリーソフトに目からウロコ、自分も自作してみた。
作った経緯は、会社で画面キャプチャのフリーソフトを
教えてもらったのがキッカケです。
こんなのあるだ、凄く便利、おそらく自分が自作した
モノより安定して動くと思います。
(なんか自分でも作れそうという思いにかられ作りました。)
ちなみに自分の画面保存のフリーソフトは
Windows10でしか動作を検証していません。
あと、動かないという方はソースコードを公開しますので
自分で作り直してください。
本当はもっと良いものを作りたかったのですが・・・
透過する処理(this.TransparencyKey)を追加するとマウスイベントが
うまく制御できなかったので、手っ取り早い対応で
乗り切ったのですが・・・。
直したい気持ちが強いです(無駄多し)。
ダウンロードはこちらから→zip358.com/tool/gamen.zip
トイウコトデC#でのソースコードを貼っときます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 画面キャプチャ
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //透明を指定する
            this.TransparencyKey = this.BackColor;
        }
        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
        }
        private void jPGToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string strMyDoc;
            string dname;
            // 画像のサイズを指定し、Bitmapオブジェクトのインスタンスを作成
            Bitmap bm = new Bitmap(this.Width-16, this.Height-66);
            // Graphicsオブジェクトのインスタンスを作成
            Graphics gr = Graphics.FromImage(bm);
            strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            DateTime dt = DateTime.Now;
            dname = dt.ToString("yyyy-MM-dd-HH_mm_ss");
            if (toolStripTextBox1.TextLength>0){
                dname = toolStripTextBox1.Text;
            }
            gr.CopyFromScreen(new Point(this.Location.X+8, this.Location.Y+58), new Point(0, 0), bm.Size);
            // JPGで保存
            bm.Save(strMyDoc + "\\" + dname + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".jpg」の名前で保存しました");
        }
        private void pNGToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string strMyDoc;
            string dname;
            // 画像のサイズを指定し、Bitmapオブジェクトのインスタンスを作成
            Bitmap bm = new Bitmap(this.Width - 16, this.Height - 66);
            // Graphicsオブジェクトのインスタンスを作成
            Graphics gr = Graphics.FromImage(bm);
            strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            DateTime dt = DateTime.Now;
            dname = dt.ToString("yyyy-MM-dd-HH_mm_ss");
            if (toolStripTextBox1.TextLength > 0)
            {
                dname = toolStripTextBox1.Text;
            }
            gr.CopyFromScreen(new Point(this.Location.X + 8, this.Location.Y + 58), new Point(0, 0), bm.Size);
            // PNGで保存
            bm.Save(strMyDoc + "\\" + dname + ".png", System.Drawing.Imaging.ImageFormat.Png);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".png」の名前で保存しました");
        }
        private void bMPToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string strMyDoc;
            string dname;
            // 画像のサイズを指定し、Bitmapオブジェクトのインスタンスを作成
            Bitmap bm = new Bitmap(this.Width - 16, this.Height - 66);
            // Graphicsオブジェクトのインスタンスを作成
            Graphics gr = Graphics.FromImage(bm);
            strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            DateTime dt = DateTime.Now;
            dname = dt.ToString("yyyy-MM-dd-HH_mm_ss");
            if (toolStripTextBox1.TextLength > 0)
            {
                dname = toolStripTextBox1.Text;
            }
            gr.CopyFromScreen(new Point(this.Location.X + 8, this.Location.Y + 58), new Point(0, 0), bm.Size);
            // BMPで保存
            bm.Save(strMyDoc + "\\" + dname + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".bmp」の名前で保存しました");
        }
        private void gifToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string strMyDoc;
            string dname;
            // 画像のサイズを指定し、Bitmapオブジェクトのインスタンスを作成
            Bitmap bm = new Bitmap(this.Width - 16, this.Height - 66);
            // Graphicsオブジェクトのインスタンスを作成
            Graphics gr = Graphics.FromImage(bm);
            strMyDoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            DateTime dt = DateTime.Now;
            dname = dt.ToString("yyyy-MM-dd-HH_mm_ss");
            if (toolStripTextBox1.TextLength > 0)
            {
                dname = toolStripTextBox1.Text;
            }
            gr.CopyFromScreen(new Point(this.Location.X + 8, this.Location.Y + 58), new Point(0, 0), bm.Size);
            // gifで保存
            bm.Save(strMyDoc + "\\" + dname + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".gif」の名前で保存しました");
        }
        private void toolStripTextBox1_Click(object sender, EventArgs e)
        {
        }
    }
}

 
 

タグ

AM,