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

FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 507, derni�re mise � jour : 2 novembre 2016  Ajouter une question

 

Cette FAQ a �t� r�alis�e � partir des questions fr�quemment pos�es sur le forum JavaFX de http://java.developpez.com ainsi que l'exp�rience personnelle des auteurs.

Nous tenons � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne pr�tend pas non plus �tre compl�te. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant r�dacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.

SommaireSceneGraph2D (17)
pr�c�dent sommaire suivant
 

Les formes g�om�triques sont des classes qui h�ritent de la classe abstraite javafx.scene.shape.Shape. Ces classes se trouvent pour la plupart dans le package javafx.scene.shape. Elles d�finissent tout un tas de propri�t�s communes telles que la couleur de remplissage (fill), plusieurs propri�t�s ayant trait � leur contour (stroke, strokeWidth, strokeType�), etc. qui permettent de dessiner � l��cran des formes g�om�triques vectorielles. Une forme g�om�trique est un n�ud graphique comme un autre, on peut donc la d�placer, la manipuler, lui faire subir des effets ou des transformations comme n'importe quel autre n�ud SceneGraph.

Vous trouvez des formes pr�tes � l'emploi de plusieurs types :

  • des formes pr�d�finies telles que :
    • la ligne (Line) ;
    • la ligne bris�e (Polyline) ;
    • les splines quadratiques (QuadCurve) ;
    • les splines cubiques (CubicCurve) ;
    • l'arc (Arc) ;
    • le rectangle (Rectangle) ;
    • le cercle (Circle) ;
    • l'ellipse (Ellipse) ;
    • le polygone (Polygon).
  • une forme � construire : le chemin (Path) ;
  • un interpr�teur de forme d�finie par une chaine de caract�res suivant la syntaxe SVG (SVGPath) ;
  • un n�ud capable d'afficher du texte sur une ou plusieurs lignes (Text).

Mis � jour le 10 octobre 2014 bouye

La classe Shape dispose de m�thodes statiques qui permettent de faire des op�rations arithm�tiques sur des formes :

  • intersect() - cr�e une forme contenant les parties communes des deux formes d�entr�e ;
  • subtract() - cr�e une forme contenant les parties de la premi�re forme pass�e en param�tre desquelles ont �t� retir�es les parties de la seconde forme pass�e en param�tre ;
  • union() - cr�e une forme qui est une union des deux formes d�entr�e.


Par exemple :

Code Java : S�lectionner tout
final Shape shape = Shape.union(rectangle, circle);

Mis � jour le 10 octobre 2014 bouye

Pour tester si un point donn� est inclus dans une forme, il faut invoquer la m�thode contains() de la forme en lui donnant le point dont question en param�tre. La m�thode retourne la valeur true si le test est valide.

Par exemple :

Code Java : S�lectionner tout
1
2
3
if (rectangle.contains(10, 10)) { 
   [...] 
}

Mis � jour le 10 octobre 2014 bouye

Pour tester si une boite englobante donn�e intersecte une forme, il faut invoquer la m�thode intersects() de la forme en lui donnant la boite englobante dont il est question en param�tre. La m�thode retourne la valeur true si le test est valide.

Par exemple :

Code Java : S�lectionner tout
1
2
3
if (rectangle.intersects(10, 10, 100, 75)) { 
   [...] 
}

Ce code permet de d�tecter si la boite englobante d'une forme en intersecte une autre par exemple.

Pour des tests plus pr�cis de collision de formes non rectangulaires, des tests plus pouss�s sont n�cessaires une fois le test de collision de la boite englobante effectu�. Dans ce cas, il faut v�rifier la forme g�n�r�e par l'intersection entre les deux formes sources et v�rifier si cette intersection a des dimensions valides.

Par exemple :

Code Java : S�lectionner tout
1
2
final Shape intersect = Shape.intersect(shape1, shape2); 
final boolean collisionDetected  = (intersect.getBoundsInLocal().getWidth() != -1);

Ou :

Code Java : S�lectionner tout
1
2
final Shape intersect = Shape.intersect(shape1, shape2); 
final boolean collisionDetected  = !intersect.getBoundsInLocal().isEmpty();

Mis � jour le 10 octobre 2014 bouye

Une peinture est un objet qui h�rite de la classe abstraite javafx.scene.paint.Paint et qui permet de sp�cifier une couleur, un gradient ou une texture sur un remplissage ou une bordure. Les peintures sont d�finies dans le package javafx.scene.paint :

  • Color - une couleur unie opaque, semi-transparente ou transparente. Cette classe d�finit tout un tas de constantes contenant des couleurs nomm�es, mais il est �galement possible de cr�er ses propres couleurs ;
  • ImagePattern - une texture cr��e � partir d'une image et d'une position. La texture se r�p�te de mani�re � couvrir toute la surface ;
  • LinearGradient - un d�grad� entre deux (ou plus) couleurs orient� suivant un axe d�fini entre deux points ;
  • RadialGradient - un d�grad� entre deux (ou plus) couleurs orient� le long de rayons qui �manent d'un point central et modifi� en fonction d'un point et d'une distance de focus.


Mis � jour le 10 octobre 2014 bouye

Pour cr�er un gradient lin�aire, il faut cr�er une instance de la classe javafx.scene.paint.LinearGradient en lui fournissant comme param�tres les deux points d�finissant le vecteur du d�grad� (axe et direction) ainsi qu'une suite de positions relatives pour chacune des couleurs sur cet axe. Les positions sont de type javafx.scene.paint.Stop.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
final LinearGradient gradient = new LinearGradient(0, 50, 0, 150, false, CycleMethod.NO_CYCLE,  
        new Stop(0, Color.CYAN),  
        new Stop(1, Color.ROYALBLUE)); 
rectangle.setFill(gradient);

Ce qui nous donne :



Ici, nous avons d�fini un gradient lin�aire qui suit un axe vertical et qui part du bord sup�rieur du rectangle avec la couleur cyan jusqu'au bord inf�rieur du rectangle, avec la couleur bleu royal. La valeur 0 indique un positionnement de la couleur � l'origine du vecteur ; tandis que la valeur 1 indique un positionnement de la couleur en fin de vecteur.

Il est �galement possible de d�finir des positionnements relatifs pour le vecteur d�finissant l'axe du d�grad� :

Code Java : S�lectionner tout
1
2
3
4
5
final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
final LinearGradient gradient = new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE,  
        new Stop(0, Color.CYAN),  
        new Stop(1, Color.ROYALBLUE)); 
rectangle.setFill(gradient);

Ce qui nous donne le m�me r�sultat que pr�c�demment :



Ici, la valeur 0 repr�sente l�extr�mit� gauche de l'axe X et sup�rieure de l'axe Y ; tandis que la valeur 1 repr�sente l'extr�mit� droite de l'axe X et inf�rieure de l'axe Y.

Mis � jour le 10 octobre 2014 bouye

Pour cr�er un gradient radial, il faut cr�er une instance de la classe javafx.scene.paint.RadialGradient en lui fournissant comme param�tres un angle et une distance de focus, le centre du d�grad� et son rayon ainsi qu'une suite de positions relatives pour chacune des couleurs sur ce rayon. Les positions sont de type javafx.scene.paint.Stop.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
final RadialGradient gradient = new RadialGradient(0, 0, 125, 100, 50, false, CycleMethod.NO_CYCLE,  
        new Stop(0, Color.CYAN),  
        new Stop(1, Color.ROYALBLUE)); 
rectangle.setFill(gradient);

Ce qui nous donne :



Ici, nous avons d�fini un gradient circulaire dont le centre est situ� au centre du rectangle et dont le rayon est de 50 avec la couleur cyan au centre du gradient et la couleur bleu royal � son extr�mit�. La valeur 0 indique un positionnement de la couleur au centre du gradient ; tandis que la valeur 1 indique un positionnement de la couleur au bout du rayon.

Il est �galement possible de d�finir des positionnements relatifs pour le centre du cercle et son rayon :

Code Java : S�lectionner tout
1
2
3
4
5
final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
final RadialGradient gradient = new RadialGradient(0, 0, 0.5, 0.5, 0.5, true, CycleMethod.NO_CYCLE,  
        new Stop(0, Color.CYAN),  
        new Stop(1, Color.ROYALBLUE)); 
rectangle.setFill(gradient);

Ce qui nous donne :



Ici, l'affichage est diff�rent de ce que nous avions pr�c�demment : le gradient a d�sormais la silhouette d'une ellipse au lieu de s'inscrire dans un cercle. La taille relative donn�e pour le rayon s'adapte en effet � la dimension de la forme pour chaque axe.

Mis � jour le 10 octobre 2014 bouye

Pour sp�cifier la peinture de remplissage d'une forme, il faut modifier la valeur de sa propri�t� fill et lui donner une nouvelle valeur de peinture.

Par exemple :

Code Java : S�lectionner tout
rectangle.setFill(Color.RED);

Ici, notre rectangle sera d�sormais rempli en rouge.

Mis � jour le 10 octobre 2014 bouye

Pour sp�cifier la peinture de bordure d'une forme, il faut modifier la valeur de sa propri�t� stroke et lui donner une nouvelle valeur de peinture.

Par exemple :

Code Java : S�lectionner tout
rectangle.setStroke(Color.BLACK);

Ici, notre rectangle aura d�sormais une bordure noire.

Mis � jour le 10 octobre 2014 bouye

Un m�me rectangle positionn� sur des coordonn�es enti�res apparait flou lorsqu'on lui rajoute une bordure� Et pourtant� le contour de vos formes g�om�triques apparait flou, car� leur affichage est correct !



Prenons un rectangle rempli (fill) avec du rouge que nous positionnons sur des coordonn�es enti�res :

Code Java : S�lectionner tout
1
2
final Rectangle rectangle = new Rectangle(50, 50, 75, 50); 
rectangle.setFill(Color.RED);

Et zoomons de plus pr�s sur l'affichage de mani�re � � voir � les pixels :



Ici le coin sup�rieur gauche de notre rectangle repose bien sur le coin du pixel (50, 50). L'affichage de notre rectangle rempli en rouge est correct ; jusque-l� tout va bien.

Maintenant, nous allons afficher une bordure noire de 1 pixel avec les options de trac� (stroke) par d�faut.

Code Java : S�lectionner tout
rectangle.setStroke(Color.BLACK);

Avec les options par d�faut, le trac� est centr� autour de la fronti�re du rectangle. C'est-�-dire que le trait d�borde de 0.5 pixel � l�ext�rieur du rectangle et de 0.5 pixel � l�int�rieur du rectangle :



Or, il n'est bien s�r pas possible de dessiner sur un demi-pixel, JavaFX va donc approximer cela en utilisant des couleurs �claircies de part et d'autre de la fronti�re :



C'est ce d�grad� de couleurs qui donne l'impression que vos contours sont flous.

Mis � jour le 9 octobre 2014 bouye

Il existe plusieurs m�thodes pour �viter cet effet de flou lors de l'affichage.

D�calage
La m�thode la plus simple consiste � d�caler les coordonn�es de vos formes g�om�triques de 0.5 pixel. Le trait occupe d�sormais un pixel plein sur l��cran et donc JavaFX n'a pas besoin d'essayer d'approximer l'affichage.

Par exemple :

Code Java : S�lectionner tout
final Rectangle rectangle = new Rectangle(50 + 0.5, 50 + 0.5, 75, 50);

Cette m�thode fonctionne tr�s bien pour les lignes, et les formes g�om�triques disposant d'un contour.



Cela est particuli�rement �vident quand on travaille sur des lignes :



Par contre, elle fonctionne nettement moins bien sur les formes d�pourvues de contour puisqu�alors c'est leur fronti�re qui tombe au milieu d'un pixel.



Pour la m�me raison que pr�c�demment, cela donne � nouveau lieu � une approximation des couleurs :



Ce qui nous donne :



D�sormais, c'est le rectangle sans bordure qui est flou !

�paisseur du trait
Une seconde m�thode consiste � augmenter la taille de l��paisseur du trait de 1 pixel de mani�re � ce que l��paisseur du trait soit un nombre pair. Il est possible de sp�cifier l��paisseur d'un trait en modifiant la valeur de la propri�t� strokeWidth de notre n�ud g�om�trique.

En effet, avec un trait de 1 pixel d��paisseur, notre bordure d�borde de 0.5 pixel de chaque c�te de la fronti�re.



Il reste donc 0.5 pixel vide de chaque c�te de la fronti�re, ce qui serait facile � combler avec un trait de 2 pixels d��paisseur puisque ce dernier d�borderait alors de 1 pixel de chaque c�t� de la fronti�re.



Par exemple :

Code Java : S�lectionner tout
rectangle.setStrokeWidth(2);

Ce qui nous donne :



Ici, le trait est � nouveau net, mais le principal souci est d�sormais le fait que les trac�s apparaissent plus �pais qu'ils ne devraient l��tre.

Type du trait
Enfin, il est possible de modifier le type de trait utilis� en modifiant la propri�t� strokeType du n�ud g�om�trique et en lui donnant une valeur de type javafx.scene.shape.StrokeType.

Par exemple :

Code Java : S�lectionner tout
rectangle.setStrokeType(StrokeType.INSIDE);

  • StrokeType.CENTERED - il s'agit du type par d�faut, l��paisseur du trait est �galement repartie entre l�ext�rieur et l�int�rieur de la forme.

  • StrokeType.INSIDE - le trait est accol� � la fronti�re de la forme et d�borde � l�int�rieur de la forme.



    Ici, la bordure recouvre une partie de la couleur de fond. La figure apparait � l'�cran avec la m�me taille que celle d�finie dans le code.
  • StrokeType.OUTSIDE - le trait est accol� � la fronti�re de la forme et d�borde � ext�rieur de la forme.



    Ici, la figure apparait l�g�rement plus grande de 2 pixels sur chaque axe. La couleur de fond n'est pas cach�e par la bordure.

Mis � jour le 9 octobre 2014 bouye

Pour construire un chemin, il faut cr�er une instance de la classe javafx.scene.shape.Path et peupler sa liste observable elements d'objets qui h�ritent de la classe abstraite javafx.scene.shape.PathElement.

  • MoveTo - d�place l'origine du trait sur les coordonn�es sp�cifi�es pour commencer un nouveau sous-chemin ;
  • ClosePath - ferme le sous-chemin actuel en tra�ant une ligne droite depuis les coordonn�es actuelles vers les coordonn�es du MoveTo le plus r�cent ;
  • LineTo - trace une ligne droite depuis les coordonn�es actuelles vers les coordonn�es sp�cifi�es ;
  • HLineTo - trace une ligne horizontale depuis les coordonn�es actuelles jusqu�� la distance sp�cifi�e ;
  • VLineTo - trace une ligne verticale depuis les coordonn�es actuelles jusqu�� la distance sp�cifi�e ;
  • ArcTo - trace un arc depuis les coordonn�es actuelles vers les coordonn�es sp�cifi�es avec le rayon sp�cifi�.
  • QuadCurveTo - trace une quadratique de B�zier depuis les coordonn�es actuelles vers les coordonn�es sp�cifi�es avec le point de contr�le sp�cifi� ;
  • CubicCurveTo - trace une spline cubique de B�zier depuis les coordonn�es actuelles vers les coordonn�es sp�cifi�es avec les deux points de contr�le sp�cifi�s.


Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Main extends Application { 
  
    @Override 
    public void start(final Stage primaryStage) { 
        final Path path = new Path(); 
        path.getElements().setAll( 
                new MoveTo(50, 50), 
                new LineTo(100, 50), 
                new LineTo(150, 150), 
                new QuadCurveTo(150, 100, 250, 200), 
                new CubicCurveTo(0, 250, 400, 0, 300, 250)); 
        final Pane root = new Pane(path); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test de chemin"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :



Pour retirer des parties du chemin, il suffit de les retirer de la liste observable elements.

Mis � jour le 10 octobre 2014 bouye

Pour cr�er un chemin utilisant la syntaxe SVG, il faut instancier un objet de type javafx.scene.shape.SVGPath et modifier sa propri�t� content pour lui donner une valeur contenant le descriptif d'un chemin en utilisant la syntaxe SVG.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Main extends Application { 
  
    @Override 
    public void start(final Stage primaryStage) { 
        final SVGPath svg = new SVGPath(); 
        svg.setContent("m 24.243661,89.88827 c 0,0 117.177699,-66.164991 158.593949,-26.769042 C 224.25387,102.51518 76.266517,119.68777 " 
+ "76.266517,119.68777 L 162.12948,206.56089 250.51783,140.3959 61.114229,180.802 123.74369,259.08882 279.30718,245.95684 212.13203,123.72838 " 
+ "c 0,0 98.48988,-77.276669 58.08378,-91.923881 -40.40611,-14.647212 -81.31728,-35.8604153 -73.74114,12.121831 7.57614,47.982246 -16.16244,83.33758 " 
+ "-37.37564,83.84266"); 
        svg.setFill(null); 
        svg.setStroke(Color.TEAL); 
        final Pane root = new Pane(svg); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test de chemin SVG"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :

Mis � jour le 10 octobre 2014 bouye

Il existe plusieurs moyens d'afficher du texte, le plus simple est d'utiliser la classe javafx.scene.text.Text, un bloc de texte. Cette classe est un n�ud, cet objet peut donc �tre plac� dans une sc�ne et manipul� comme n'importe quel autre n�ud.

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Text text = new Text("Salut le monde !"); 
        text.setLayoutX(100); 
        text.setLayoutY(100); 
        text.setFill(Color.BLUE); 
        final Pane root = new Pane(); 
        root.getChildren().setAll(text); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test sur l'opacit�"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ici, le point rouge est positionn� sur les coordonn�es (100, 100).



Dans notre code, nous avons initialis� une zone de texte et mis la couleur du texte en bleu. Nous avons positionn� notre zone de texte aux coordonn�es (100, 100) et pourtant elle n'est pas correctement align�e avec le point rouge. Contrairement aux n�uds de formes g�om�triques, par d�faut, les informations de positionnement ne sont pas ici relatives aux coordonn�es du coin sup�rieur gauche du n�ud, mais � celles de l'extr�mit� de la ligne de base (baseline) sur laquelle repose le texte.

Il est possible de positionner plus pr�cis�ment notre zone de texte en sp�cifiant une nouvelle valeur pour la propri�t� textOrigin :

Code Java : S�lectionner tout
text.setTextOrigin(VPos.TOP);

Lorsque ceci est fait, la zone de texte est positionn�e d�apr�s les coordonn�es du coin sup�rieur gauche de sa boite englobante.



Par d�faut, la propri�t� textOrigin a une valeur �gale � VPos.BASELINE.

Il est possible de sp�cifier du texte sur plusieurs lignes en s�parant chaque ligne de texte par un caract�re \n. Par exemple :

Code Java : S�lectionner tout
final Text text = new Text("Ceci est un texte\nmulti-ligne");

Ce qui nous donne :



Par d�faut, la largeur de la zone de texte est �gale � la longueur de la plus longue ligne. Cependant, il est possible de forcer un retour � la ligne en utilisant la propri�t� wrappingWidth :

Code Java : S�lectionner tout
1
2
3
4
final Text text = new Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum mollis a arcu et blandit. " 
+ "Etiam pulvinar gravida mi at feugiat. Donec blandit luctus massa ac blandit. Nulla quis consequat augue. Donec malesuada malesuada " 
+ "mauris, eget euismod mi elementum at."); 
text.setWrappingWidth(200);

Ce qui nous donne :



Dans ce code, une ligne sera coup�e d�s qu'elle d�passe les 200 pixels de long. La hauteur totale de la zone de texte sera fonction du nombre de sauts de ligne, de la taille de la police ainsi que de l'espace interligne (contr�lable via la propri�t� lineSpacing).

Dans une IU, il est �galement possible d'afficher du texte en utilisant les contr�les textuels Label (pour les labels simples) et TextFlow (pour le texte riche).

Mis � jour le 5 septembre 2014 bouye

Pour sp�cifier la police de caract�res, il est possible de modifier la valeur de la propri�t� font d'un objet Text en lui donnant une valeur de type javafx.scene.text.Font.

Une police peut �tre cr��e directement en initialisant ses diff�rents champs de mani�re similaire au code suivant :

Code java : S�lectionner tout
final Font arial20Font = new Font("Arial", 20);

Ce dernier code cr�era une police Arial d'une taille de 20 points.

Mais il est �galement possible d'utiliser les m�thodes de fabrique qui sont pr�sentes dans cette classe :

Code Java : S�lectionner tout
final Font times30BoldItalicFont = Font.font("Times New Roman", FontWeight.BOLD, FontPosture.ITALIC, 30);

Ce dernier code cr�era une police Times New Roman grasse et italique d'une taille de 30 points.

Il ne reste plus alors qu'� modifier la propri�t� font de la zone de texte.

Code Java : S�lectionner tout
text.setFont(times30BoldItalicFont);

Ce qui nous donne :



Il est �galement possible de modifier la police en ayant recours aux CSS.

Mis � jour le 27 janvier 2009 bouye

Pour effectuer une d�coupe, il faut modifier la valeur de la propri�t� clip d'un n�ud et lui donner comme valeur un autre n�ud qui servira de forme de d�coupe.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class D2Clip extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
        rectangle.setFill(Color.RED); 
        final Circle clip = new Circle(100, 100, 50); 
        rectangle.setClip(clip); 
        final Pane root = new Pane(); 
        root.getChildren().setAll(rectangle); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test de d�coupe"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :



Ici, le rectangle en pointill� gris indique la forme et la position initiale de notre rectangle rouge. Nous pouvons voir que seule une petite partie du rectangle rouge initial est d�sormais visible � travers le cercle. De plus, lors de la mise en page, la boite englobante du rectangle est d�sormais identique � celle du cercle. Les �v�nements souris ou tactiles ne seront captur�s que sur la partie visible du rectangle.

Mis � jour le 10 octobre 2014 bouye

Pour faire un masque de transparence, il faut proc�der comme pour une d�coupe. Cependant, ici, la transparence de la couleur de remplissage joue un r�le important : outre la forme de la d�coupe, la transparence va �galement indiquer si notre objet est visible ou pas.

Par exemple :

Code Java : S�lectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Main extends Application { 
  
    @Override 
    public void start(Stage primaryStage) { 
        final Rectangle rectangle = new Rectangle(50, 50, 150, 100); 
        rectangle.setFill(Color.RED); 
        final Circle clip = new Circle(100, 100, 50); 
        clip.setFill(new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE,  
                new Stop(0, Color.BLACK),  
                new Stop(1, Color.TRANSPARENT))); 
        rectangle.setClip(clip); 
        final Pane root = new Pane(); 
        root.getChildren().setAll(rectangle); 
        final Scene scene = new Scene(root, 350, 300); 
        primaryStage.setTitle("Test de masque"); 
        primaryStage.setScene(scene); 
        primaryStage.show(); 
    } 
  
    public static void main(String[] args) { 
        launch(args); 
    } 
}

Ce qui nous donne :



Ici, le rectangle en pointill� gris indique la forme et la position initiales de notre rectangle rouge. Le cercle qui sert de d�coupe est rempli avec un gradient lin�aire vertical qui va du noir opaque (n'importe quelle couleur opaque fonctionne) sur le bord sup�rieur jusqu'� la couleur transparente sur le bord inf�rieur. D�sormais le rectangle est non seulement d�coup� en forme de cercle, mais il s'estompe �galement dans sa partie inf�rieure et laisse apparaitre les n�uds qui sont plac�s sous lui. Les �v�nements souris ou tactiles continuent d��tre captur�s sur les parties visibles du rectangle remplies avec la couleur transparente.

Mis � jour le 10 octobre 2014 bouye

Proposer une nouvelle r�ponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �a


R�ponse � la question

Liens sous la question
pr�c�dent sommaire suivant
 

Les sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.