首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >录制特定表单活动+音频到avi的.NET代码

录制特定表单活动+音频到avi的.NET代码
EN

Stack Overflow用户
提问于 2009-12-20 07:25:35
回答 2查看 2.1K关注 0票数 1

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-20 18:25:02

视频部分其实很简单。你所需要的只是一个计时器每秒运行20次,它会将表单的画布作为帧保存到图像文件中。然后根据这些图片创建一个动画。

捕获图像的步骤:

代码语言:javascript
复制
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音频示例:

票数 2
EN

Stack Overflow用户

发布于 2009-12-20 19:47:03

查看Gallio:它是一个很棒的测试框架,并且内置了屏幕录制应用程序接口。

这篇文章展示了几个例子:http://blog.bits-in-motion.com/2009/09/announcing-gallio-and-mbunit-v31.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1934452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档