JavaFx创建HatchStyles(类似于C#.Net)

在使用场景形状对象或在JavaFx Canvas上绘图时(在jdk中,第三方库,示例代码等),是否有类似于.Net HatchStyles的填充形状?

我目前能想到的唯一解决方案是使用通过这些.net hatchstyles的图片截图创建的ImagePattern !

GraphicsContext gc = canvas.getGraphicsContext2D(); ImagePattern pattern = new ImagePattern(new Image("dotnet-pattern.png"); gc.setFill(pattern); 

.Net填充样式的图形表示: 在此处输入图像描述

一种方法是略微修改您的建议:使用ImagePattern ,但为底层图像创建适当的节点。

如果不知道HatchStyle的外观,下面的变化可能会有效:

 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.paint.ImagePattern; import javafx.scene.shape.Line; import javafx.scene.shape.StrokeLineCap; import javafx.stage.Stage; public class HatchStyleCanvas extends Application { @Override public void start(Stage primaryStage) { Image hatch = createHatch(); ImagePattern pattern = new ImagePattern(hatch, 0, 0, 20, 20, false); Canvas canvas = new Canvas(600, 600); GraphicsContext gc = canvas.getGraphicsContext2D(); gc.setFill(pattern); gc.fillRect(0, 0, 600, 600); primaryStage.setScene(new Scene(new StackPane(canvas))); primaryStage.show(); } private Image createHatch() { Pane pane = new Pane(); pane.setPrefSize(20, 20); Line fw = new Line(-5, -5, 25, 25); Line bw = new Line(-5, 25, 25, -5); fw.setStroke(Color.ALICEBLUE); bw.setStroke(Color.ALICEBLUE); fw.setStrokeWidth(5); bw.setStrokeWidth(5); pane.getChildren().addAll(fw, bw); new Scene(pane); return pane.snapshot(null, null); } public static void main(String[] args) { launch(args); } } 

这导致了

在此处输入图像描述