我想知道是否有可能使javafx画布呈圆形。经典画布是一个矩形,我能改变吗? 多谢你们! 马特奥
答案 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();
}