Essayer de mettre cadre pivotant vers l'avant avant de prendre une capture d'écran, mais obtenir des artefacts

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

Question

J'ai une partie de mon application qui prend une capture d'écran d'une certaine fenêtre, mais avant que je ne veux donc j'apporter la fenêtre à l'avant. Cela fonctionne très bien sur ma machine Mac mais quand je l'ai testé sur Windows XP sur la capture d'écran parallèles a toujours une zone grisées où la fenêtre était chevauchement. Il semble que la capture d'écran est toujours prise alors que la fenêtre que je veux sur le dessus est en cours de transfert vers le haut. Je l'ai essayé d'utiliser à la fois:

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

Quelqu'un at-il une solution raisonnable à ce problème?

Était-ce utile?

La solution

Si vous essayez de prendre une capture d'écran d'une fenêtre w peinte par Java, il vous suffit de lui demander de se peindre sur un

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

en appelant les fenêtres de la méthode de paint(g). Vous pouvez ensuite enregistrer le BufferedImage dans un fichier. Si vous saisissant une fenêtre externe, alors je crois que Oscar Reyes vous a donné toutes les réponses.

Autres conseils

  • Vous pouvez ajouter un délai le fil qui prend la capture d'écran.

  • Vous pouvez tirer la capture d'écran du cadre lorsque l'on a obtenu le focus:

    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);
    
  • Vous pouvez faire les deux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top