Проблема с получением круга при увеличении радиуса с помощью JavaFX - PullRequest
0 голосов
/ 03 марта 2019

При создании объекта Circle с JavaFX и использовании графического контекста для перемещения по овалу, я хочу, чтобы он расширялся за пределы первого созданного овала.Так что он будет больше, чем последний, и обойдется первым, если это имеет смысл для вас.

Вот изображение того, что сейчас:

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 голосов
/ 03 марта 2019

Мне кажется, что ваше предположение о том, как определяется strokeOval, неверно.

public void strokeOval​(double x, double y, double w, double h)

Параметры определяют ограничивающий прямоугольник, а не, как вы предполагаете, центр и радиус.Просто посмотрите документацию для получения более подробной информации.

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