2012-06-22 4 views
3

J'ai récemment trouvé javafx 2.1 très utile pour mon projet de faire un lecteur vidéo, mais après un succès j'ai rencontré un problème avec la taille de la vidéo Dimensions. En d'autres termes, quand je cours le programme et la vidéo joue normalement je ne peux pas voir toute la vidéo parce que ses dimensions sont plus grandes que la résolution de mon écran .Que puis-je faire dans le code suivant pour redimensionner la taille réelle de la vidéo Windows7 64bit:JavaFx Video Dimension OUT de l'écran

public class HelloFx extends Application { 

    public static void main(String[] args){ 
     launch(args); 
    } 

    @Override 
    public void start(final Stage stage) throws Exception { 
     stage.setTitle("Movie Player"); 
     final BorderPane root = new BorderPane(); 

     final Media media = new Media("file:///Users//user//Videos//Sintel.mp4"); 
     final MediaPlayer player = new MediaPlayer(media); 
     final MediaView view = new MediaView(player); 

     // System.out.println("media.width: "+media.getWidth()); 
     root.getChildren().add(view); 

     final Scene scene = new Scene(root, 400, 400, Color.BLACK); 


     stage.setScene(scene); 
     stage.show(); 
     player.play(); 
     player.setOnReady(new Runnable() { 
      @Override 
      public void run() { 
       int w = player.getMedia().getWidth(); 
       int h = player.getMedia().getHeight(); 

       stage.setMinWidth(w); 
       stage.setMinHeight(h); 


      } 
     }); 
      //player.play(); 

    } 
} 

Répondre

7

La classe JavaFX 2 MediaView a 2 fonctions qui peuvent aider. Ils sont .setFitHeight() et .setFitWidth().

Ainsi, vous pouvez, au lieu de laisser les médias dicter la taille de l'écran, laissez votre Scénographie la taille de l'écran ...

public void run() { 
       int w = stage.getWidth(); // player.getMedia().getWidth(); 
       int h = stage.getHeight(); // player.getMedia().getHeight(); 

       // stage.setMinWidth(w); 
       // stage.setMinHeight(h); 
       // make the video conform to the size of the stage now... 
       player.setFitWidth(w); 
       player.setFitHeight(h); 


      } 

Ensuite, la vidéo doit tenir à l'intérieur de la scène. Ce code ci-dessus est assez grossier, et vous voudrez peut-être "Scale" la vidéo mieux, à savoir: trouver le ratio de la largeur du média VS la largeur de la scène & media height VS stage height ... Mais ce code ci-dessus devrait vous aider.

+0

Merci beaucoup pour votre aide. Je donnerais +1 pour votre aide mais je n'ai pas assez de réputation. – PeGiannOS