SlimDXを使用して領域をキャプチャしようとしています。私が意味することは、[0,0]
から[1920,1080]
にキャプチャするつもりはないということです。 好ましくは、キャプチャに必要な情報を保持するRectangleオブジェクトを渡します。SlimDXで領域をキャプチャする
CopyFromScreen
のような代替案を見ると、キャプチャ時間が大幅に短縮されるため、SlimDX(DirectX)でこれを行いたいと思います。
私は約100x100ピクセルのチャンクをキャプチャする必要があります。私はDirectXを使用することが私の最善の策かもしれないと思います。すべての始点座標と幅/高さは整数配列で格納されます。
私は現在、次のコードを使用しています:
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
変数に対して反復。しかし、これは30回の反復で約500msかかる。
ビットマップとグラフィックスは再利用できますか?すべての反復でそれらを作成して破棄する必要はありません。 –
すべての反復で「座標」が異なるため、これが必要です。それとも別のことを意味していますか? – Arjan
あなたはそれが常に100x100ピクセルになると言いました。 –