モジュール javafx.graphics
パッケージ javafx.scene.paint

クラスImagePattern


  • public final class ImagePattern
    extends Paint

    ImagePatternクラスは、図形をイメージ・パターンで塗りつぶします。 ユーザーは、アンカー矩形を指定して、図形の左上隅に対して相対的にイメージの位置、幅および高さを定義できます。 図形がアンカー矩形の外側に出る場合、イメージはタイリングされます。

    proportional変数をtrue (デフォルト)に設定した場合は、アンカー矩形を単位正方形(0.0->1.0)に対して相対的に指定する必要があり、このアンカー矩形が図形全体に拡大されます。 proportional変数をfalseに設定した場合は、アンカー矩形を図形のローカル座標系に指定する必要があり、イメージがアンカー矩形に合せて拡大されます。 アンカー矩形が図形全体に拡大されることはありません。

    次の例は、proportional変数の使用方法を示しています。 上の行の図形では、プロポーショナル座標(デフォルト)を使用してアンカー矩形を指定しています。 下の行の図形では、絶対座標を使用しています。 花のイメージは三角形全体を埋めるように拡大されるのに対し、ドット・パターンのイメージは円形の中にタイリングされます。

    
    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();
        }
    

    前述のコードにより、次の出力が生成されます。

    HelloImagePatternの例の視覚的レンダリング

    導入されたバージョン:
    JavaFX 2.2
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      ImagePattern​(Image image)
      指定されたイメージからImagePatternの新しいインスタンスを作成します。
      ImagePattern​(Image image, double x, double y, double width, double height, boolean proportional)
      ImagePatternの新しいインスタンスを生成します。
    • コンストラクタの詳細

      • ImagePattern

        public ImagePattern​(Image image)
        指定されたイメージからImagePatternの新しいインスタンスを作成します。 デフォルト値は、その他すべてのパラメータに対して使用されます。
        パラメータ:
        image - 描画として使用するイメージ。
        例外:
        NullPointerException - イメージがnullの場合。
        IllegalArgumentException - イメージがロードされていない場合、つまり進捗状況が< 1である場合です。
      • ImagePattern

        public ImagePattern​(Image image,
                            double x,
                            double y,
                            double width,
                            double height,
                            boolean proportional)
        ImagePatternの新しいインスタンスを生成します。
        パラメータ:
        image - 描画として使用するイメージ。
        x - アンカー矩形のx原点。
        y - アンカー矩形のy原点。
        width - アンカー矩形の幅。
        height - アンカー矩形の高さ。
        proportional - 座標が、ImagePatternによって塗りつぶされる図形に対してプロポーショナルかどうか。
        例外:
        NullPointerException - イメージがnullの場合。
        IllegalArgumentException - イメージがロードされていない場合、つまり進捗状況が< 1である場合です。
    • メソッドの詳細

      • getImage

        public final Image getImage()
        ペイントとして使用されるイメージを取得します。
        戻り値:
        描画として使用するイメージ。
      • getX

        public final double getX()
        アンカー矩形のx原点を取得します。
        デフォルト値:
        0.0
        戻り値:
        アンカー矩形のx原点。
      • getY

        public final double getY()
        アンカー矩形のy原点を取得します。
        デフォルト値:
        0.0
        戻り値:
        アンカー矩形のy原点。
      • getWidth

        public final double getWidth()
        アンカー矩形の幅を取得します。
        デフォルト値:
        1.0
        戻り値:
        アンカー矩形の幅。
      • getHeight

        public final double getHeight()
        アンカー矩形の高さを取得します。
        デフォルト値:
        1.0
        戻り値:
        アンカー矩形の高さ。
      • isProportional

        public final boolean isProportional()
        始点と終点の位置がプロポーショナルか絶対値かを示すbooleanを取得します。 このフラグがtrueである場合、座標空間(パターンで塗りつぶす図形の境界上にマップするために、範囲[0..1]の座標がスケーリングされる)に2つの終点が定義されます。 このフラグがfalseである場合、座標はノードのローカル座標系で指定されます。
        デフォルト値:
        true
        戻り値:
        boolean (この描画がプロポーショナルである場合はtrue)。