我正在寻找一些 C# 代码 .. 或 .NET 组件来记录我的屏幕(而不是整个桌面)上的表单活动以及音频,类似于 Camtasia 等程序允许执行的操作。
问问题
2068 次
2 回答
2
视频部分其实很简单。您所需要的只是一个每秒运行 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
于 2009-12-20T10:25:02.083 回答
1
查看Gallio:这是一个很棒的测试框架,它内置了屏幕录制 API。
这篇文章展示了几个例子: http ://blog.bits-in-motion.com/2009/09/announcing-gallio-and-mbunit-v31.html
于 2009-12-20T11:47:02.557 回答