”;
Two dimensional(2D) shapes, in geometry, are usually referred to as structures that has only two dimensions of measure, commonly length and breadth, and lie on an XY plane. These structures can either be open or closed figures.
Open figures include curves like Cubic curve, Quadrilateral curve, etc. whereas closed figures include all types of polygons, circles etc.
In JavaFX, these 2D shapes can be drawn on an application by importing the javafx.scene.shape package. However, to improve the quality of a shape, there are various properties and operations that can be performed on it.
In this chapter, we will learn about Stroke Type property in detail.
Stroke Type Property
The Stroke Type property of 2D shapes is used to specify the type of boundary line a 2D shape must have. In JavaFX, this property is set using the StrokeType class. You can set the type of the stroke using the method setStrokeType() as follows −
Path.setStrokeType(StrokeType.stroke_type);
The stroke_type of a shape can be −
-
Inside − The boundary line will be drawn inside the edge (outline) of the shape (StrokeType.INSIDE).
-
Outside − The boundary line will be drawn outside the edge (outline) of the shape (StrokeType.OUTSIDE).
-
Centered − The boundary line will be drawn in such a way that the edge (outline) of the shape passes exactly thorough the center of the line (StrokeType.CENTERED).
By default, the stroke type of a shape is centered. Following is the diagram of a triangle with different Stroke Types −
Example
Let us see an example demonstrating the usage of StrokeType property on a 2D shape. Save this file with the name StrokeTypeExample.java.
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Polygon; import javafx.scene.shape.StrokeType; import javafx.scene.paint.Color; import javafx.stage.Stage; public class StrokeTypeExample extends Application { @Override public void start(Stage stage) { //Creating a Triangle Polygon triangle = new Polygon(); //Adding coordinates to the polygon triangle.getPoints().addAll(new Double[]{ 100.0, 50.0, 170.0, 150.0, 100.0, 250.0, }); triangle.setFill(Color.BLUE); triangle.setStroke(Color.BLACK); triangle.setStrokeWidth(7.0); triangle.setStrokeType(StrokeType.CENTERED); //Creating a Group object Group root = new Group(triangle); //Creating a scene object Scene scene = new Scene(root, 300, 300); //Setting title to the Stage stage.setTitle("Drawing a Triangle"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Compile and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeExample.java java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeExample
Output
On executing, the above program generates a JavaFX window displaying a triangle with centered stroke type as shown below.
Example
Let us see an example demonstrating the usage of INSIDE StrokeType property on a 2D shape. We are using a larger width here in order to properly show the difference between INSIDE and CENTERED stroke types from previous example. Save this file with the name StrokeTypeEllipse.java.
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Ellipse; import javafx.scene.shape.StrokeType; import javafx.scene.paint.Color; import javafx.stage.Stage; public class StrokeTypeEllipse extends Application { @Override public void start(Stage stage) { //Drawing an ellipse Ellipse ellipse = new Ellipse(); //Setting the properties of the ellipse ellipse.setCenterX(150.0f); ellipse.setCenterY(100.0f); ellipse.setRadiusX(100.0f); ellipse.setRadiusY(50.0f); ellipse.setFill(Color.ORANGE); ellipse.setStroke(Color.BLACK); ellipse.setStrokeWidth(20.0); ellipse.setStrokeType(StrokeType.INSIDE); //Creating a Group object Group root = new Group(ellipse); //Creating a scene object Scene scene = new Scene(root, 300, 300); //Setting title to the Stage stage.setTitle("Drawing a Ellipse"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Compile and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeEllipse.java java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeEllipse
Output
On executing, the above program generates a JavaFX window displaying a triangle with centered stroke type as shown below.
”;