C#でスクリーンショットツールを作成したのでソースコード紹介
日々の業務でPCのスクリーンショットを撮る機会は多いと思いますが、もうちょっと手軽に扱いたいと思ったので簡単なツールを作りました。C#を使ってアクティブウィンドウのスクリーンショットを撮影し、特定のフォルダに自動保存するものです。
ソースコードはこちら。要所要素にコメント文で解説載せています。
using System;
using System.Drawing; // 画像処理に必要な機能を提供 (Bitmap, Graphicsなど)
using System.Windows.Forms; // WindowsフォームアプリケーションのUI機能を提供 (Form, Buttonなど)
using System.Threading; // スレッド処理 (Sleepメソッドなど)
using System.Drawing.Imaging; // 画像フォーマット関連 (ImageFormatなど)
class Test
{
// アプリケーションのエントリポイント
static void Main()
{
Application.Run(new TestForm()); // TestFormのインスタンスを生成し、アプリケーションを実行
}
}
class TestForm : Form // Formクラスを継承し、ウィンドウを作成
{
// コンストラクタ: フォームの初期設定を行う
public TestForm()
{
this.StartPosition = FormStartPosition.CenterScreen; // フォームを画面中央に表示
this.Width = 350; // フォームの幅を設定
this.Height = 200; // フォームの高さを設定
this.Text = "スクショ"; // フォームのタイトルバーのテキスト
// ボタンの作成と設定
Button tb1 = new Button()
{
Size = new Size(200, 50), // ボタンのサイズ
Text = "Screen Shot", // ボタンに表示されるテキスト
Font = new Font("Meiryo UI", 14, FontStyle.Regular), // ボタンのフォント設定
Location = new Point(50, 50), // フォーム内でのボタンの位置
Parent = this // ボタンの親をこのフォームに設定
};
tb1.Click += new EventHandler(this.Button1_Click); // ボタンがクリックされたときのイベントハンドラを登録
}
// ボタンクリック時のイベントハンドラ
private void Button1_Click(object sender, EventArgs e)
{
Console.WriteLine("3秒後にアクティブウィンドウのスクリーンショットを撮影します...");
Thread.Sleep(3000); // 3秒間処理を一時停止 (スクリーンショットを撮る準備のため)
// 現在日時を取得
DateTime now = DateTime.Now;
// 「yyyymmdd」形式に変換
string nowDate = now.ToString("yyyyMMdd");
// スクリーンショットを撮影
// 指定されたサイズ (1350x750) のBitmapオブジェクトを作成
using (Bitmap screenshot = new Bitmap(1350, 750))
{
// BitmapオブジェクトからGraphicsオブジェクトを作成 (画像描画に使用)
using (Graphics g = Graphics.FromImage(screenshot))
{
// 画面の座標 (250, 200) から、サイズ (1350, 750) の範囲をBitmapの (0, 0) へコピー
g.CopyFromScreen(250, 200, 0, 0, new Size(1350, 750));
}
// 画像を保存
string filePath = "my_screenshot.png";
screenshot.Save(filePath, ImageFormat.Png); // 指定されたパスにPNG形式で画像を保存
this.Activate(); // スクリーンショットツール自身のウィンドウをアクティブにする
this.Focus(); // スクリーンショットツール自身のウィンドウにフォーカスを当てる
Console.WriteLine("スクリーンショットを保存しました:" + filePath); // コンソールに保存パスを表示
MessageBox.Show("スクリーンショットを保存しました"); // 保存完了メッセージをポップアップ表示
}
}
}
コンパイルし実行するとフォームが現れるので、ボタンを押して3秒後にアクティブウィンドウのスクリーンショット(指定箇所の切り抜き)が開始されます。
スポンサーリンク