使用SlimDX捕获区域

时间:2017-03-22 17:51:41

标签: c# performance directx slimdx

所以我试图使用SlimDX捕获一个区域。我的意思是,我不打算从[0,0]捕获到[1920,1080]。 我希望传递一个Rectangle对象,该对象包含捕获所需的信息。

我想用SlimDX(DirectX)做到这一点,因为如果我们看一下像CopyFromScreen这样的替代品,它会大大改善捕获时间。

我需要捕获大约30个100x100像素的块,我认为使用DirectX可能是我最好的选择。所有起始coördinates加宽度/高度都存储在整数数组中。

我目前正在使用以下代码:

Rectangle rect = new Rectangle(chunk[0], chunk[1], chunk[2], chunk[3]); 
Bitmap temp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb); 
Graphics g2 = Graphics.FromImage(temp); 
g2.CopyFromScreen(rect.Left, rect.Top, 0, 0, temp.Size, CopyPixelOperation.SourceCopy);

此代码生成在一个循环遍历chunks变量的foreach循环中。但是,这需要大约500毫秒来完成30次迭代。

1 个答案:

答案 0 :(得分:1)

正如@Nico指出的那样,复制一次然后拆分比许多小型复制更快。这是一个例子

++