2009-12-19 41 views

回答

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