我一直试图在网上找到一种方法,但我找不到任何东西。
我想用JavaFX GraphicsContext绘制一个“反向圆圈”。 这些图像展示了我想要的东西。
在图像编辑器中,我可以删除新图层中的圆形区域...我没有看到任何可以在GraphicsContext中执行此操作的函数。
我需要能够选择这个“圆圈”的中心点和半径。
谢谢!
答案 0 :(得分:1)
我不太确定直接使用GraphicsContext
,但你可以使用Blending来完成。
ImageView image; // Your image
Circle mask = new Circle();
Group g = new Group();
g.setBlendMode(BlendMode.SRC_ATOP);
g.getChildren.add(image);
g.getChildren.add(mask);
答案 1 :(得分:1)
构建圆形路径并在绘制图像时将其用作剪辑:
@Override
public void start(Stage primaryStage) {
Image image = new Image("https://i.stack.imgur.com/zEoW1.jpg");
double w = image.getWidth();
double h = image.getHeight();
Canvas canvas = new Canvas(w, h);
GraphicsContext gc = canvas.getGraphicsContext2D();
// draw background
gc.setFill(Color.BLACK);
gc.fillRect(0, 0, w, h);
double r = Math.min(h, w) * 2 / 5;
double cx = w / 2;
double cy = h / 2;
// create circular path
gc.beginPath();
gc.moveTo(cx - r, cy); // to first point on the circle
gc.arc(cx, cy, r, r, 180, 360);
gc.closePath();
gc.clip();
gc.drawImage(image, 0, 0);
StackPane root = new StackPane();
root.getChildren().add(canvas);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}