我可以在javafx中创建圆形画布吗?

时间:2018-05-13 10:05:16

标签: canvas javafx fxml

我想知道是否有可能使javafx画布呈圆形。经典画布是一个矩形,我能改变吗? 多谢你们! 马特奥

1 个答案:

答案 0 :(得分:0)

你无法真正使画布圆润。你可以防止在圆形区域之外的任何东西被渲染。

可以通过设置clip

Canvas属性来完成此操作
@Override
public void start(Stage primaryStage) throws Exception {
    final double size = 400;
    final double radius = size / 2;
    Canvas canvas = new Canvas(size, size);

    canvas.setClip(new Circle(radius, radius, radius));

    GraphicsContext gc = canvas.getGraphicsContext2D();

    // draw something
    final double padding = 25;
    gc.fillRect(padding, padding, size - padding * 2, size - padding * 2);

    primaryStage.setScene(new Scene(new Group(canvas)));
    primaryStage.show();
}

或使用路径和GraphicsContext.clip

剪辑绘制的内容
@Override
public void start(Stage primaryStage) throws Exception {
    final double size = 400;
    final double radius = size / 2;
    Canvas canvas = new Canvas(size, size);
    GraphicsContext gc = canvas.getGraphicsContext2D();

    // create path for circle
    gc.beginPath();
    gc.arc(radius, radius, radius, radius, 0, 360);
    gc.closePath();

    // apply path as clip
    gc.clip();

    // draw something
    final double padding = 25;
    gc.fillRect(padding, padding, size - padding * 2, size - padding * 2);

    primaryStage.setScene(new Scene(new Group(canvas)));
    primaryStage.show();
}
相关问题