IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Dessin dynamique dans une Scene


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Dessin dynamique dans une Scene
    Bonjour,

    J'essaye de dessiner ( des carrés... par exemple) depuis une classe.

    Je crée une instance de cette classe depuis la scene sur laquelle je veux la dessiner (j'ajouterais le code pour le poser à l'emplacement du clic).

    Question:
    Comment faire pour récupérer le contexte graphic,ou autre, et forcer à dessiner?

    Le code la scene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    var sceneRef: Scene;
     
    Stage {
        title: "Application title"
        scene: sceneRef=Scene {
            width: 250
            height: 80
            content: [
                Text {
                    font : Font {
                        size : 16
                    }
                    x: 10
                    y: 30
                    content: "Application content"
                }
     
                Button {
    	text: "creer carre"
    	action: function() {
    		instance();  
     
              }
    }
            ]
     
        }
    }
    //
    // Declaration des Fonctions
    //
           function instance():Void{
            var pCarre= objectClasse{}
                    pCarre.creerCarre();
     
     
     
        }

    Puis là volontairement "lighté" la classe objetClasse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class objectClasse {
     
            var x;
            var y;
     
           public  function creerCarre():Void{
     
            Rectangle {
    	x: 20, y: 20
    	width: 140, height: 90
    	fill: Color.BLACK
           }
     
           println("passageCarre")
     
     
            }
     
     
    }
    (Je commence juste sur javaFX)

    Ceci dit, en java j'aurais surchargé paint(Graphics g) etc...
    Merci d'avance.....

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 64
    Points : 75
    Points
    75
    Par défaut
    En JavaFX, on n'accède pas à un contexte graphique.
    En fait, le dessin en JFX est plus proche de Illustrator/Inkscape que de Photoshop/Gimp/Paint.

    Dans ton cas, creerCarre() devrait retourner le rectangle que tu crée (là, il est juste garbage collecté) et instance() devrait l'insérer dans sceneRef.content.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 855
    Points
    22 855
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par PhiLho Voir le message
    En JavaFX, on n'accède pas à un contexte graphique.
    +1

    En fait, le dessin en JFX est plus proche de Illustrator/Inkscape que de Photoshop/Gimp/Paint.
    +1000

    Il reste cependant possible d'y interfacer du Swing (via SwingComponent.wrap()) et du Java2D (via SwingUtils.toFXImage()*) quand le besoin de manipuler des pixels se fait sentir. Du coté des implementations Java, le code reste 100% identique à ce qu'on fait d'habitude. On peut donc, par exemple, insérer dans la scène un JPanel/JComponent perso contenant une BufferedImage qui servira alors de canvas de dessin bitmap.

    *ou Image.impl_fromPlatformImage() mais cette seconde fonction c'est pas officiellement décrite dans l'API.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Points : 409
    Points
    409
    Par défaut
    Je plussois PhilLo et Bouye sur javaFX.
    Donc un langage de script sur un stack graphique, le SceneGraph, donc une nouvelle approche. L'interopérabilité java est totale (attention toutefois à la version 1.5) et compatible des deux côtés avec Swing.
    Dans javaFX, pas de contexte, ni de dessin mais un arborescence d'objets graphiques que l'on met en scène

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Dessin dynamique dans une scene
    Merci pour vos réponses et votre aide

    Pour ceux que ça intéresse ci-dessous le code minimaliste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.text.Text;
    import javafx.scene.text.Font;
    import javafx.scene.control.Button;
    import javafx.scene.shape.Rectangle;
     
    /**
     * @author sahnurkasapyan
     */
    var sceneRef: Scene;
    var s:Rectangle;
     
    Stage {
        title: "Application title"
        scene: sceneRef=Scene {
            width: 250
            height: 80
     
            content: [
                Text {
                    font : Font {
                        size : 16
                    }
                    x: 10
                    y: 30
                    content: "Application content"
                }
     
                Button {
    	text: "creer carre"
    	action: function() {
                    var pCarre= objectClasse{}
                   s=pCarre.creerCarre();
     
                 insert  s into sceneRef.content;
     
              }
    }
            ]
     
        }
    }
    La classe objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    import javafx.scene.shape.Rectangle;
    import javafx.scene.paint.Color;
     
    /**
     * @author sahnurkasapyan
     */
     
    public class objectClasse  {
     
            var x;
            var y;
            var s:Rectangle;
           public  function creerCarre():Rectangle{
     
     
            s=Rectangle {
    	x: 20, y: 20
    	width: 100, height: 50
    	fill: Color.AQUA
            };
     
           return s;
           //println("passageCarre")
     
     
            }
     
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/03/2011, 10h23
  2. dessiner des composants superposées dans une scene
    Par bracket dans le forum Débuter
    Réponses: 2
    Dernier message: 10/06/2009, 00h07
  3. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58
  4. [jsp] include dynamique dans une jsp
    Par petitelulu dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/03/2005, 07h59
  5. Réponses: 6
    Dernier message: 24/09/2004, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo