2009-05-17 7 views
0

私はスクリーンショットを取り込んでそのフォルダに保存する小さなアプリケーションを持っています。ほとんどの場合、ほとんどの場合は動作しますが、Team Fortress 2や実行中などウォークラフト3は、OpenGLモードでは完全に黒い(または白い)画像を返します。誰にもこれを解決する方法がありますか?私は知りませんが、これは他の回答与えられた関連であるかどうか、Graphics.CopyFromScreenは黒い画面を返します

Bitmap bmp; 
Graphics gfx; 
bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); 
gfx = Graphics.FromImage(bmpScreenshot); 
gfx.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); 
bmpScreenshot.Save("image.jpg", ImageFormat.Jpeg); 
+0

しかし、スクリーンショットは、標準モードでWarcraft 3を実行している間は完全にキャプチャされます。 DirectXです。 –

答えて

0

あなたは画面が常にそうではないかもしれないPixelFormat.Format32bppArgbこの中にあると仮定されています

私はC#の標準を使用しています。

関連性がある場合は、画面の深さを取得するためにScreen.PrimaryScreen.BitsPerPixelを試すことができます。私はそれがうまくいくかどうかわからないので、それを試していない。

1

私はそれがあなたのグラフィックスカードによってこれらのタイプのグラフィックスが重ねられていることを理解しています。それはまた、おそらくあなたはおそらくビデオを表示する画面のビットをつかむことができない理由です。

[コントロールパネル] - > [画面のプロパティ - >設定 - >詳細設定 - >

のトラブルシューティングを、私はあなたがそれらをつかむできるようにする必要があり、ハードウェアアクセラレーションを減らすためにそこにオプションがあると思います。

私はビデオからスクリーンショットを取得するためにこれを行う必要があることを知っています、うまくいけば、これはあなたのOpenGLのものに役立ちます。

2

Windowsスクリーンショット機能は、DirectXサーフェスからデータをコピーしません。あなたは手動で説明したin this articleのようにそれを行う必要があります。

+0

OPは彼がOpenGLで動作していると述べています。 – ChrisF

+0

TF2は純粋なDirectXです – ebo

関連する問題