MP4, AVI Capture

Media Player を再生して、スクリーン(画面全体)をキャプチャします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 再生するファイル(AVI, MP4)をボタンクリックから openFileDialog で選択します。
    再生を一時停止して、スクリーンをキャプチャして PNG ファイル(c:\tmp\w.png)に保存します。
    事前に c:\tmp\ のフォルダーを作成しておいて下さい。
    キャプチャの基本プログラムは Capture Screen を参照して下さい。
  2. 2018/08/01 Windows10 & Visual Studio Enterprise 2017 を使って、自動生成のプロジェクトから構築します。
    スタートアイコンをクリックして Visual Studio 2017 を起動します。
    [ファイル][新規作成]から[プロジェクト]を選び Windows フォームを生成して下さい。
    Form1.cs のデザイナーを表示してツールボックスから Media Player を選択してドラッグで張り付けます。
  3. 次にボタンと Open File Dialog をドラッグして張り付けます。
    ボタンのキャプションを "Load" にして、ボタンクリックのイベントハンドラ(button1_Click)を追加します。
    Open File Dialog の説明は Open File Dialog を参考にして下さい。
  4. Form1.cs のデザイナーを表示してツールボックスから二個目のボタンをドラッグして張り付けます。
    ボタンのキャプションを "Snap" にしてボタンクリックのイベントハンドラ(button2_Click)を追加します。
    Media Player と Button の配置(サイズ)を整えて下さい。
    画面のデザイン情報は Form1.Designer.cs で確認することが出来ます。
  5. 自動生成で作成した Form1.cs のソースコードを修正して下さい。
    Form1() でウインドウのサイズを 800*600 に設定しています。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                Width = 800;
                Height = 600;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    string fileName = this.openFileDialog1.FileName;
                    axWindowsMediaPlayer1.URL = fileName;
                }
            }
    
            private void button2_click(object sender, EventArgs e)
            {
                Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                  Screen.PrimaryScreen.Bounds.Height);
                Graphics g = Graphics.FromImage(bmp);
                g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bmp.Size);
                g.Dispose();
                bmp.Save("c:\\tmp\\w.png");
                bmp.Dispose();
            }
        }
    }
    
  6. プログラムを起動して Load ボタンをクリックすると Open File Dialog が開きます。
    ファイル(AVI, MP4)を選択するとムービーが再生されます。
    Media Player の下に表示されているユーザーインターフェイスの一時停止ボタンで再生を停止します。
    "Snap" ボタンをクリックすると、スクリーンをキャプチャして "c:\\tmp\\w.png" に保存します。
    PNG ファイルに保存するのは簡単で bmp.Save() 関数を呼び出すだけです。
        bmp.Save("c:\\tmp\\w.png");
    
    BMP 形式で保存するときは、次のように書きます。
        bmp.Save("c:\\tmp\\w.bmp", ImageFormat.Bmp);
    

拡大表示

  1. 私は小さい文字が見にくくなって、パソコン画面を拡大して表示しています。 (^_^;)
    拡大率を「150%」に、解像度は 1920×1080(推奨) に設定しています。
  2. この環境でサイズを取得すると「Width=1280, Height=720」になり、画面全体が保存されません。
    そこで Width, Height を修正してキャプチャします。
            private void button2_click(object sender, EventArgs e)
            {
                int width, height;
                width = Screen.PrimaryScreen.Bounds.Width;
                height = Screen.PrimaryScreen.Bounds.Height;
                width = (int)(width*1.5); 
                height = (int)(height*1.5); 
                MessageBox.Show("Width:" + width + "  Height:" + height);
                Bitmap bmp = new Bitmap(width, height);
                Graphics g = Graphics.FromImage(bmp);
                g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bmp.Size);
                g.Dispose();
                bmp.Save("c:\\tmp\\w.png");
                bmp.Dispose();
            }
    

前田稔(Maeda Minoru)の超初心者のプログラム入門