рисовать круг внутри квадрата, перетаскивая мышь - PullRequest
0 голосов
/ 14 мая 2018

Думаю, у меня не очень хороший день, и я борюсь с проблемой, которая, я думаю, должна быть легкой.

Я должен нарисовать круг при перетаскивании мышью. Пользователи нажимают и удерживают, перетаскивают мышь и отпускают кнопку.

Но:

1) У меня есть координаты события mousedown и текущие (x1, y1, x2, y2). Это определяет прямоугольник.

2) (x1, y1) должен быть центром круга, а его радиус должен быть расстоянием между x1, y1 и текущими.

3) Я должен показать текущий радиус (значение; не сама линия).

4) Пользователь должен иметь возможность рисовать круг, перетаскивая влево, вправо, вверх, вниз и любую промежуточную комбинацию.

Большое спасибо!

PS: в качестве опции (например, если пользователь перетаскивает, когда нажата клавиша Shift), прямоугольник должен быть квадратом, а вместо овала должен быть нарисован круг.

1 Ответ

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

(ставка на то, что 0,0 - левый верхний угол, в противном случае инвертируйте 1 и 2; x1 / y1 - кнопка в центре)

радиус = sqrt ((x1-x2) ^ 2 + (y1-y2) ^ 2)

x_leftuppercorner = x1 - радиус

y_leftuppercorner = y1 - радиус

x_rightlowercorner = x1 + радиус

y_rightlowercorner = y1 + радиус

dCircle (x_luc, y_luc, x_ruc, y_ruc)

...