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

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.webp", System.Drawing.Imaging.ImageFormat.Jpeg.webp);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".jpg.webp」の名前で保存しました");
        }
        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.webp", System.Drawing.Imaging.ImageFormat.Png.webp);
            gr.Dispose();
            MessageBox.Show("ドキュメントに「" + dname + ".png.webp」の名前で保存しました");
        }
        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)
        {
        }
    }
}

 
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

AM,