使用JavaFX增大半径时出现圆形的问题

时间:2019-03-02 23:10:16

标签: java javafx

当使用JavaFX创建Circle对象并使用Graphic Context描画椭圆形时,我希望它扩展到第一个创建的椭圆形之外。因此,它将比最后一个大,如果对您有意义,请绕开第一个。

以下是现在的图片:

enter image description here

以下是我想要做的事情的图片。以及fillOval方法:

Expected

Canvas canvas = new Canvas(400, 200);
GraphicsContext gc;
gc = canvas.getGraphicsContext2D();
gc.setLineWidth(1);

Circle c = new Circle();

canvas.setOnMousePressed(e ->
{
        c.setCenterX(e.getX());
        c.setCenterY(e.getY());
});

canvas.setOnMouseDragged(e ->
{
        c.setRadius((Math.abs(e.getX() - c.getCenterX()) + Math.abs(e.getY() - c.getCenterY())) / 2);
        gc.strokeOval(c.getCenterX(), c.getCenterY(), c.getRadius(), c.getRadius());
    }
});

由于某种原因,它始于左上角。我不明白为什么这样做。对我来说没有任何意义。

1 个答案:

答案 0 :(得分:2)

在我看来,您对如何定义strokeOval的假设是错误的。

MyDate

参数定义一个边界矩形,而不是您所假定的中心和半径。只需查看文档以了解更多详细信息。