.NET код для записи определенной формы деятельности + аудио в AVI - PullRequest
1 голос
/ 20 декабря 2009

Я ищу какой-нибудь код C # или компонент .NET для записи активности формы на моем экране (а не на рабочем столе) вместе со звуком, аналогично тому, что позволяют программы, подобные Camtasia.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2009

Видео на самом деле довольно просто. Все, что вам нужно - это таймер, работающий 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();
    }
}

Это всего лишь небольшой пример, конечно, вам придется добавить некоторое сжатие и попытаться избежать сохранения одного и того же изображения дважды. Зная, сколько изображений одинаково + зная частоту кадров, вы знаете, как долго показывать один и тот же кадр.

Чтобы добавить курсор, вам нужно сохранить некоторые переменные с помощью мыши x, y и событие при щелчке мыши. А потом просто добавь его в картинки.

Конечно, это не будет работать для 3d-игр, несмотря на оверлей, который рисуется после рисования win32.

Для этого вам придется использовать DirectX / OpenGl / XNA. Я думаю, что идея та же самая. Для аудио также DirectX.

Мой полный источник: http://deathsquad.pl/archiwum/Inne/so/answer-1934452.rar

Некоторые образцы аудио DirectX: http://www.codeproject.com/KB/directx/audiosav.aspx

1 голос
/ 20 декабря 2009

Выезд Gallio : Это отличный фреймворк для тестирования, имеющий встроенный API записи экрана.

В этом посте показано несколько примеров: http://blog.bits -in-motion.com/2009/09/announcing-gallio-and-mbunit-v31.html

...