📜  JavaFX | ImagePattern 类

📅  最后修改于: 2022-05-13 01:54:28.533000             🧑  作者: Mango

JavaFX | ImagePattern 类

ImagePattern 是 JavaFX 的一部分。此类用于用图像图案填充形状。用户可以指定锚矩形,它定义了图像相对于形状左上角的位置、宽度和高度。如果形状超出了锚矩形,则图像是平铺的。

类的构造函数:

  1. ImagePattern(Image i) :使用指定图像创建 ImagePattern 的新实例。
  2. ImagePattern(Image i, double x, double y, double width, double height, boolean prop) :创建具有指定 x、y 坐标、定义的宽度和高度以及是否成比例的图像。

常用方法:

MethodExplanation
getHeight()Returns the height of the image pattern.
getWidth()Returns the width of image pattern.
getImage()Returns the image of the image pattern.
getX()Returns the X origin of the anchor rectangle.
getY()Returns the Y origin of the anchor rectangle.
isOpaque()Returns whether the paint is completely opaque or not.
isProportional()Returns whether the start and end locations is completely proportional or not.

下面的程序说明了 ImagePattern 类的使用:

  1. 从图像创建 ImagePattern 并将其应用于矩形的Java程序:在此程序中,我们将从图像创建名为image_pattern的 ImagePattern。使用 FileInputStream 导入图像。使用setFill()函数将此 image_pattern 添加到矩形。创建一个 VBox 并将矩形添加到vbox 。将vbox添加到场景中,将场景添加到舞台中。调用show()函数来显示结果。
    // Java Program to create a ImagePattern from
    // a image and apply it to the rectangle
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.scene.image.*;
    import java.io.*;
    import javafx.scene.paint.*;
    import javafx.scene.shape.*;
      
    public class ImagePattern_1 extends Application {
      
        // launch the application
        public void start(Stage s) throws Exception
        {
      
            // set title for the stage
            s.setTitle("Creating ImagePattern");
      
            // create a input stream
            FileInputStream input = new FileInputStream("D:\\GFG.png");
      
            // create a image
            Image image = new Image(input);
      
            // create ImagePattern
            ImagePattern image_pattern = new ImagePattern(image);
      
            // create a Rectangle
            Rectangle rect = new Rectangle(100, 100, 200, 150);
      
            // set fill for rectangle
            rect.setFill(image_pattern);
      
            // create a VBox
            VBox vbox = new VBox(rect);
      
            // create a scene
            Scene sc = new Scene(vbox, 200, 200);
      
            // set the scene
            s.setScene(sc);
      
            s.show();
        }
      
        public static void main(String args[])
        {
      
            // launch the application
            launch(args);
        }
    }
    

    输入图像:

    输出:

  2. Java程序从图像创建 ImagePattern,设置 x、y 坐标、高度和宽度,以及是否成比例并将其应用于矩形:在此程序中,我们将从图像创建一个名为image_pattern的 ImagePattern。使用 FileInputStream 导入图像。指定锚矩形的 x、y 坐标、它的高度、宽度以及是否成比例地绕过值作为 ImagePattern 的构造函数的参数。使用setFill()函数将此 image_pattern 添加到矩形。创建一个 VBox 并将矩形添加到vbox 。将vbox添加到场景中,将场景添加到舞台中。调用show()函数来显示结果。
    // Java Program to create an ImagePattern form an image, 
    // set the x, y coordinate, its height and width, and 
    // whether it is proportional or not and apply it to
    // the rectangle
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.control.Label;
    import javafx.stage.Stage;
    import javafx.scene.image.*;
    import java.io.*;
    import javafx.scene.paint.*;
    import javafx.scene.shape.*;
      
    public class ImagePattern_2 extends Application {
      
        // launch the application
        public void start(Stage s) throws Exception
        {
      
            // set title for the stage
            s.setTitle("Creating ImagePattern");
      
            // create a input stream
            FileInputStream input = new FileInputStream("D:\\GFG.png");
      
            // create a image
            Image image = new Image(input);
      
            // create ImagePattern
            ImagePattern image_pattern = new ImagePattern(image, 100, 100,
                                                         100, 100, false);
      
            // create a Rectangle
            Rectangle rect = new Rectangle(100, 100, 200, 150);
      
            // set fill for rectangle
            rect.setFill(image_pattern);
      
            // create a VBox
            VBox vbox = new VBox(rect);
      
            // create a scene
            Scene sc = new Scene(vbox, 200, 200);
      
            // set the scene
            s.setScene(sc);
      
            s.show();
        }
      
        // Main Method
        public static void main(String args[])
        {
      
            // launch the application
            launch(args);
        }
    }
    

    输入图像:

    输出:

注意:以上程序可能无法在在线 IDE 中运行,请使用离线编译器。

参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/paint/ImagePattern.html