3

これをオンラインで行う方法を見つけようとしていますが、何も見つけることができませんでした。

JavaFX GraphicsContext で「逆円」を描きたい。これらの画像は、私が望むものを示しています。

オリジナル: 原画

「逆円」(描きたいもの)の場合: 逆円付き

画像エディターでは、新しいレイヤーの円の領域を消去するだけです... GraphicsContext でそれを行う関数は見当たりません。

この「円」の中心点と半径を選択できる必要があります。

ありがとう!

4

2 に答える 2

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();
}
于 2017-01-13T08:14:25.063 に答える