ImagePattern (JavaFX 17)

Module javafx.graphics
Package javafx.scene.paint

## Class ImagePattern

- java.lang.Object
- - javafx.scene.paint.Paint
  - - javafx.scene.paint.ImagePattern

-     public final class ImagePattern
      extends Paint

  The `ImagePattern` class fills a shape with an image pattern. The user may specify the anchor rectangle, which defines the position, width, and height of the image relative to the upper left corner of the shape. If the shape extends out of the anchor rectangle, the image is tiled.

  If the `proportional` variable is set to true (the default) then the anchor rectangle should be specified relative to the unit square (0.0->1.0) and will be stretched across the shape. If the `proportional` variable is set to false, then the anchor rectangle should be specified in the local coordinate system of the shape and the image will be stretched to fit the anchor rectangle. The anchor rectangle will not be stretched across the shape.

  The example below demonstrates the use of the `proportional` variable. The shapes on the top row use proportional coordinates (the default) to specify the anchor rectangle. The shapes on the bottom row use absolute coordinates. The flower image is stretched to fill the entire triangle shape, while the dot pattern image is tiled within the circle shape.

      import javafx.scene.Scene;
      import javafx.scene.image.Image;
      import javafx.scene.paint.ImagePattern;
      import javafx.scene.shape.Circle;
      import javafx.scene.shape.Polygon;
      import javafx.stage.Stage;

      public class HelloImagePattern extends Application {

          private static final String flowerURL = "file:flower.png";
          private static final String dotsURL = "file:dots.png";

          @Override public void start(Stage stage) {
              stage.setTitle("Image Pattern");
              Group root = new Group();
              Scene scene = new Scene(root, 600, 450);

              Image dots = new Image(dotsURL);
              Image flower = new Image(flowerURL);

              Polygon p = new Polygon();

              p.setLayoutX(10);
              p.setLayoutY(10);
              p.getPoints().add(50.0);
              p.getPoints().add(0.0);
              p.getPoints().add(100.0);
              p.getPoints().add(100.0);
              p.getPoints().add(0.0);
              p.getPoints().add(100.0);

              p.setFill(new ImagePattern(flower, 0, 0, 1, 1, true));

              root.getChildren().add(p);

              Polygon p2 = new Polygon();

              p2.setLayoutX(10);
              p2.setLayoutY(120);
              p2.getPoints().add(50.0);
              p2.getPoints().add(0.0);
              p2.getPoints().add(100.0);
              p2.getPoints().add(100.0);
              p2.getPoints().add(0.0);
              p2.getPoints().add(100.0);

              p2.setFill(new ImagePattern(flower, 0, 0, 100, 100, false));

              root.getChildren().add(p2);

              Circle circ = new Circle(50);
              circ.setTranslateX(120);
              circ.setTranslateY(10);
              circ.setCenterX(50);
              circ.setCenterY(50);
              circ.setFill(new ImagePattern(dots, 0.2, 0.2, 0.4, 0.4, true));

              root.getChildren().add(circ);

              Circle circ2 = new Circle(50);
              circ2.setTranslateX(120);
              circ2.setTranslateY(10);
              circ2.setCenterX(50);
              circ2.setCenterY(50);
              circ2.setFill(new ImagePattern(dots, 20, 20, 40, 40, false));

              root.getChildren().add(circ2);
              stage.setScene(scene);
              stage.show();
          }

  The code above produces the following:

  Since:
    JavaFX 2.2

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ImagePattern​(Image image)` | Creates a new instance of ImagePattern from the specified image.
    `ImagePattern​(Image image, double x, double y, double width, double height, boolean proportional)` | Creates a new instance of ImagePattern.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `double` | `getHeight()` | Gets the height of the anchor rectangle.
    `Image` | `getImage()` | Gets the image to be used as a paint.
    `double` | `getWidth()` | Gets the width of the anchor rectangle.
    `double` | `getX()` | Gets the x origin of the anchor rectangle.
    `double` | `getY()` | Gets the y origin of the anchor rectangle.
    `boolean` | `isProportional()` | Gets a boolean that indicates whether start and end locations are proportional or absolute.

    - ### Methods declared in class javafx.scene.paint.Paint

      `isOpaque, valueOf`

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ImagePattern

          public ImagePattern​(Image image)

      Creates a new instance of ImagePattern from the specified image. Default values are used for all other parameters.
      Parameters:
        `image` - the image to be used as the paint.
      Throws:
        `NullPointerException` - if the image is null.
        `IllegalArgumentException` - if image is not done loading, that is if progress is < 1.

    - #### ImagePattern

          public ImagePattern​(Image image,
                              double x,
                              double y,
                              double width,
                              double height,
                              boolean proportional)

      Creates a new instance of ImagePattern.
      Parameters:
        `image` - the image to be used as the paint.
        `x` - the x origin of the anchor rectangle.
        `y` - the y origin of the anchor rectangle.
        `width` - the width of the anchor rectangle.
        `height` - the height of the anchor rectangle.
        `proportional` - whether the coordinates are proportional to the shape which ImagePattern fills
      Throws:
        `NullPointerException` - if the image is null.
        `IllegalArgumentException` - if image is not done loading, that is if progress is < 1.

  - ### Method Detail

    - #### getImage

          public final Image getImage()

      Gets the image to be used as a paint.
      Returns:
        Image to be used as a paint.

    - #### getX

          public final double getX()

      Gets the x origin of the anchor rectangle.
      Default value:
        0.0
      Returns:
        The x origin of the anchor rectangle.

    - #### getY

          public final double getY()

      Gets the y origin of the anchor rectangle.
      Default value:
        0.0
      Returns:
        The y origin of the anchor rectangle.

    - #### getWidth

          public final double getWidth()

      Gets the width of the anchor rectangle.
      Default value:
        1.0
      Returns:
        The width of the anchor rectangle.

    - #### getHeight

          public final double getHeight()

      Gets the height of the anchor rectangle.
      Default value:
        1.0
      Returns:
        The height of the anchor rectangle.

    - #### isProportional

          public final boolean isProportional()

      Gets a boolean that indicates whether start and end locations are proportional or absolute. If this flag is true, the two end points are defined in a coordinate space where coordinates in the range `[0..1]` are scaled to map onto the bounds of the shape that the pattern fills. If this flag is false, then the coordinates are specified in the local coordinate system of the node.
      Default value:
        true
      Returns:
        boolean that is true if this paint is proportional.