2009-05-17 3 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이에 있다고 가정합니다 :

I는 C# 표준을 사용하고 있습니다 .

관련성이있는 경우 화면 깊이를 보려면 Screen.PrimaryScreen.BitsPerPixel을 시도해보십시오. 나는 그것을 시도하지 않았기 때문에 그것이 효과가있을 것인지 아닌지 모른다.

1

그래픽 카드로 인해 그래픽 유형이 너무 많아서 이해합니다. 또한 비디오를 보여주는 화면의 비트를 잡을 수없는 이유이기도합니다.

제어판 -> 디스플레이 등록 정보 -> 설정 -> 고급 ->

나는 당신이 그들을 잡아 수 있도록해야 하드웨어 가속을 줄이기 위해이의 옵션이 있다고 생각 문제를 해결합니다.

비디오에서 스크린 샷을 찍으려면이 작업을해야한다는 것을 알고 있습니다. 잘하면이 방법이 OpenGL에 도움이 될 것입니다.

2

Windows 스크린 샷 기능은 DirectX 표면의 데이터를 복사하지 않습니다. 설명 된대로 수동으로해야합니다 in this article.

+0

OP는 그가 OpenGL에서 실행 중임을 언급합니다. – ChrisF

+0

TF2는 순수한 DirectX입니다. – ebo

관련 문제