Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET代码来记录特定的表单活动+;音频到avi_C#_Screen_Recording - Fatal编程技术网

C# .NET代码来记录特定的表单活动+;音频到avi

C# .NET代码来记录特定的表单活动+;音频到avi,c#,screen,recording,C#,Screen,Recording,我在找一些C代码。。或.NET组件在我的屏幕(而不是整个桌面)上记录窗体的活动以及音频,类似于Camtasia之类的程序所允许的操作。视频部分实际上非常简单。您所需要的只是一个每秒运行20次的计时器,它可以将窗体的画布作为帧保存到图像文件中。然后用这些图片创建一个动画 要捕获图像,请执行以下操作: public partial class Form1 : Form { public Form1() { InitializeComponent();

我在找一些C代码。。或.NET组件在我的屏幕(而不是整个桌面)上记录窗体的活动以及音频,类似于Camtasia之类的程序所允许的操作。

视频部分实际上非常简单。您所需要的只是一个每秒运行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也是如此

我的完整来源:

一些DirectX音频样本:

检查:这是一个很棒的测试框架,它内置了屏幕录制API

这篇文章展示了几个例子:

您能告诉我它的哪个API包含录制功能吗?我找不到确切的dll文件。我测试了它。它不支持屏幕音频录制。