2014-04-04 2 views
3

컴퓨터에 두 개의 스크린이 연결되어 있습니다. 각 화면에서 화면 캡처를 시도합니다. 다음 코드를 사용하고 있습니다 : 이미지 0과 image1에이 다른 : JRE7에 java.awt.Robot.createScreenCapture가 다중 화면에서 작동하지 않습니다. 마지막 JRE (8)로 구성하십시오.

GraphicsDevice[] screens = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); //same screens[] with JRE7 and JRE8 

Robot rbt0 = new Robot(screens[0]); 
BufferedImage image0 = rbt0.createScreenCapture(new Rectangle(0,0,1024,1024)); 

Robot rbt1 = new Robot(screens[1]); 
BufferedImage image1 = rbt1.createScreenCapture(new Rectangle(0,0,1024,1024)); 
  • 은 각 캡처 화면 오른쪽에서 수행됩니다.
  • JRE8에서 캡쳐는 두 화면에서 동일합니다. image0과 image1은 동일한 시각적 이미지입니다 (둘 다 화면 0의 이미지 임).

javadoc에는 JRE8의 Robot 클래스에 대한 새로운 기능이 있음을 언급하지 않았습니다. JRE8의 버그입니까? 같은 문제가있는 사람이 있습니까? 이 버그가 확인되면이 문제점을 어떻게 Oracle에 알릴 수 있습니까?

모두에게 감사,

감사합니다,

답변

1

그것은 화면 좌표가 변경 한 로봇에 의해 계산되는 방법을 나타납니다.

Java 8의 javadoc에 대해 다음과 같은 버그가 제기되어 문제를 설명 할 수 있습니다.

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8033128

그것은 변화가 의도적으로 만든 것처럼 보이는 버그가 아닙니다.

두 번째 화면을 캡처하려면 첫 번째 화면의 크기만큼 위치를 오프셋해야 할 수 있습니다.

Robot rbt1 = new Robot(screens[1]); 
BufferedImage image1 = rbt1.createScreenCapture(new Rectangle(1024,0,1024,1024)); 
+0

대단히 감사합니다. 화면 번호는 더 이상 올바른 화면에서 캡처하는 것과 관련이 없습니다. 이제 좌표를 다루어야합니다. 문제는 두 번째 화면이 주 화면의 왼쪽에 있으면 x 좌표가 음수라는 것입니다. 두 번째 화면이 주 화면의 오른쪽에 있으면 x 좌표는 양수입니다. 작업하려는 화면이 기본 화면의 왼쪽 또는 오른쪽에 있는지 어떻게 알 수 있습니까? – burgerLove

+0

@burgerLove 각 GraphicsDevice 객체의 구성에서 각 화면의 좌표를 가져올 수 있어야합니다. 예를 들어 GrahpicsDevice javadoc의 시작 부분을 살펴보십시오. http://docs.oracle.com/javase/8/docs/api/java/awt/GraphicsDevice.html – Aaron

+0

변경 사항이 고의로 변경되었음을 어떻게 알 수 있습니까? 그래서 이것은 여전히 ​​그렇다, 그렇지 않은가? 고칠 것인가? – ZetCoby