Могу ли я создать круглый холст в javafx? - PullRequest
0 голосов
/ 13 мая 2018

Мне было интересно, можно ли сделать холст javafx круглой формы.Классический холст - это прямоугольник, могу ли я это изменить?Спасибо, парни!Маттео

1 Ответ

0 голосов
/ 13 мая 2018

Вы не можете по-настоящему сделать холст круглым.Вы можете предотвратить рендеринг всего, что находится за пределами круглой области.

Это можно сделать, установив свойство 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();
}
...