Пытаюсь переместить поворотную рамку вперед перед тем, как сделать снимок экрана, но получаю артефакты

StackOverflow https://stackoverflow.com/questions/1280333

Вопрос

У меня есть часть моего приложения, которая делает снимок экрана определенного окна, но прежде чем я это сделаю, я хочу вывести окно на передний план.Это отлично работает на моем компьютере Mac, но когда я тестировал его в Windows XP на параллелях, на снимке экрана всегда была затененная область там, где было перекрывающееся окно.Кажется, снимок экрана всегда делается, когда окно, которое я хочу сверху, переносится наверх.Я пробовал использовать оба:

     frame.setVisible(true);
            and
     frame.setAlwaysOnTop(true);

Есть ли у кого-нибудь разумное решение этой проблемы?

Это было полезно?

Решение

Если вы пытаетесь сделать снимок экрана окна w нарисованный Java, вы можете просто попросить его нарисовать себя на

BufferedImage bi = new BufferedImage(
    w.width, w.height, BufferedImage.TYPE_INT_RGB); 
Graphics g = bi.getGraphics();

позвонив окнам' paint(g) метод.Затем вы можете сохранить BufferedImage в файл.Если вы хватаетесь за внешнее окно, то я считаю, что Оскар Рейес дал вам все ответы.

Другие советы

  • Вы можете добавить задержку в поток, который делает снимок экрана.

  • Вы можете сделать снимок экрана из кадра, когда он получил фокус:

    class ScreenshotShooter implements FocusListener  {
        public void focusGained( FocusEvent e ) {
            // smile..... 
            // you may add a sec of delay here just be be sure.
        }
        public void focusLost( FocusEvent e ) {}
     }
    
    
     FocusListener focusListener = new ScreenshotShooter();
     frame.addFocusListener( focusListener );
     frame.setVisible( true ); // should autofire
     frame.remoe( focusListener);
    
  • Вы можете сделать и то, и другое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top