我在找一些C#代码..或者.NET组件来记录表单在我的屏幕(而不是整个桌面)上的活动以及音频,类似于Camtasia之类的程序所允许的功能。
发布于 2009-12-20 18:25:02
视频部分其实很简单。你所需要的只是一个计时器每秒运行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音频示例:
发布于 2009-12-20 19:47:03
查看Gallio:它是一个很棒的测试框架,并且内置了屏幕录制应用程序接口。
这篇文章展示了几个例子:http://blog.bits-in-motion.com/2009/09/announcing-gallio-and-mbunit-v31.html
https://stackoverflow.com/questions/1934452
复制相似问题