1

Camtasia などのプログラムで許可されているのと同様に、画面 (デスクトップ全体ではなく) のフォームのアクティビティをオーディオと共に記録する C# コードまたは .NET コンポーネントを探しています。

4

2 に答える 2

2

ビデオ部分は実際にはかなり簡単です。必要なのは、フォームのキャンバスをフレームとして画像ファイルに保存するタイマーを 1 秒間に 20 回実行することだけです。次に、これらの写真からアニメーションを作成します。

画像をキャプチャするには:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        tVideo.Start();
    }

    int i = 0;

    private void tVideo_Tick(object sender, EventArgs e)
    {
        String lFile = String.Format("c:\\{0}.bmp", i);
        SaveAsBitmap(this, lFile);

        i++;
    }

    public void SaveAsBitmap(Control aCtrl, string aFileName)
    {
        if (File.Exists(aFileName))
            File.Delete(aFileName);

        Graphics lGraphics = aCtrl.CreateGraphics();

        Bitmap lImage = new Bitmap(aCtrl.Width, aCtrl.Height);

        aCtrl.DrawToBitmap(lImage, new Rectangle(0, 0, aCtrl.Width, aCtrl.Height));

        lImage.Save(aFileName);
        lImage.Dispose();
    }
}

これは単なる軽いサンプルです。もちろん、圧縮を追加して、同じ画像を 2 回保存しないようにする必要があります。同じ画像が何枚あるのかを把握し、さらにフレームレートを把握することで、同じフレームを表示する時間を知ることができます。

カーソルを追加するには、マウスの x、y およびマウス クリック時のイベントでいくつかの変数を保持する必要があります。そして、それを写真に追加するだけです。

もちろん、これは win32 ペイントの後に描画されるオーバーレイにもかかわらず、3D ゲームでは機能しません。

そのためには、DirectX/OpenGl/XNA を使用する必要があります。考え方は同じだと思います。オーディオの場合、DirectX も。

私の完全なソース: http://deathsquad.pl/archiwum/Inne/so/answer-1934452.rar

DirectX オーディオ サンプル: http://www.codeproject.com/KB/directx/audiosav.aspx

于 2009-12-20T10:25:02.083 に答える