所以我试图用SlimDX捕获区域。我的意思是,我不想从[0,0]
到[1920,1080]
。 最好我想传递一个Rectangle对象来保存捕获所需的信息。用SlimDX捕获区域
我想用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);
此代码是生活在一个foreach循环在chunks
变量进行迭代。但是,这需要大约500毫秒才能完成30次迭代。
是否有可能重用位图和图形?无需在每次迭代时创建并丢弃它们。 –
这是必要的,因为每次迭代的“坐标”都不相同。或者你的意思是别的吗? – Arjan
我看到你提到它将始终是100x100像素 –