首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX GraphicsContext倒圆

JavaFX GraphicsContext倒圆
EN

Stack Overflow用户
提问于 2017-01-13 12:13:28
回答 2查看 696关注 0票数 3

我一直试图在网上找到一种方法来做这件事,但我什么也找不到。

我想用JavaFX GraphicsContext画一个“反圆圈”。这些图片显示了我想要的东西。

原件:

使用"Inverted Circle“(我想画的):

在图像编辑器中,我可以删除新图层中的圆圈区域。我在GraphicsContext中看不到任何能做到这一点的函数。

我需要能够选择这个“圆”的中心点和半径。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-01-13 13:21:45

我不太确定是否可以直接使用GraphicsContext,但您可以使用Blending来实现。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-01-13 16:14:25

创建一个圆形路径,并在绘制图像时将其用作剪辑:

代码语言:javascript
复制
@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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41627280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档