2014-09-19 3 views
3

나는 실행중인 DirectX 게임의 Java 응용 프로그램으로 스크린 샷을 찍는 방법을 찾고 있습니다. 다음 코드를 사용합니다.directX에서 java로 스크린 샷을 찍는 방법

Robot robot = new Robot(); 
GraphicsConfiguration config = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); 
BufferedImage screenshot = robot.createScreenCapture(config.getBounds()); 
ImageIO.write(screenshot,"png", file); 

이 게임은 directX 게임에서 완벽하게 작동합니다. 저는 Java에 친숙하지 않고 DirectX에서도 그다지 익숙하지 않습니다. 저는이 코드를 조정하려고합니다. 나는 굉장히 많이 봤지 만, 모든 것이 이미 내가 가진 동일한 코드로 연결된다.

DirectX 게임의 스크린 샷을 찍는 다른 방법을 알고 있습니까?

감사합니다.

답변

0

이 코드를 실제로 테스트하지는 않았지만 GraphicsDevice#getFullScreenWindow을 호출해도 작동 할 수 있습니다.

BufferedImage screenshot; 
    GraphicsDevice gd = GraphicsEnvironment 
      .getLocalGraphicsEnvironment() 
      .getDefaultScreenDevice(); 
    Window window = gd.getFullScreenWindow(); 
    if(window == null) { 
     Robot robot = new Robot(); 
     GraphicsConfiguration config = gd.getDefaultConfiguration(); 
     screenshot = robot.createScreenCapture(config.getBounds()); 
    } else { 
     screenshot = new BufferedImage(window.getWidth(), 
       window.getHeight(), 
       BufferedImage.TYPE_INT_RGB); 
     window.paint(screenshot.getGraphics()); 
    } 
    ImageIO.write(screenshot, "png", file); 
+0

답변을 주셔서 감사합니다.하지만 문제는 'getFullScreenWindow()'를 호출 한 후 'window'가 여전히 'null'입니다. – user68293

+0

@ user68293 인터넷에서 자바로하는 방법을 찾을 수 없습니다. 어쩌면 허용 된 대답 [here] (http://stackoverflow.com/questions/1962142/take-screenshot-of-directx-full-screen-application#1962286)이 대안적인 접근 방법이 될 수 있습니다. –

관련 문제