import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.scene.paint.Color; import javafx.scene.paint.ImagePattern; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Test extends Application { @Override public void start(Stage stage) { Image img1 = makeImage2x2(); ImagePattern pat1 = new ImagePattern(img1, 0, 0, 0.33, 0.33, true); ImageView iv1 = makeImageView (img1, 10, 10, 80, 80); Rectangle r11 = makePatternRect(pat1, 110, 10, 80, 80); Rectangle r12 = makePatternRect(pat1, 210, 10, 80, 80); Image img2 = makeImage2x2(); ImagePattern pat2 = new ImagePattern(img2, 0, 0, 0.33, 0.33, true); Rectangle r2 = makePatternRect(pat2, 10, 110, 80, 80); ImageView iv21 = makeImageView(img2, 110, 110, 80, 80); ImageView iv22 = makeImageView(img2, 210, 110, 80, 80); Group root = new Group(iv1, r11, r12, r2, iv21, iv22); Scene scene = new Scene(root, 300, 200); stage.setScene(scene); stage.show(); } ImageView makeImageView(Image img, double x, double y, double fw, double fh) { ImageView iv = new ImageView(img); iv.setX(x); iv.setY(y); iv.setFitWidth(fw); iv.setFitHeight(fh); return iv; } Rectangle makePatternRect(ImagePattern pat, double x, double y, double w, double h) { Rectangle r = new Rectangle(x, y, w, h); r.setFill(pat); r.setStrokeWidth(5); r.setStroke(Color.ORANGE); return r; } public Image makeImage2x2() { WritableImage img = new WritableImage(2, 2); img.getPixelWriter().setArgb(0, 0, 0xffff0000); img.getPixelWriter().setArgb(1, 0, 0xff00ff00); img.getPixelWriter().setArgb(0, 1, 0xff0000ff); img.getPixelWriter().setArgb(1, 1, 0xff000000); return img; } public static void main(String argv[]) { launch(argv); } }