Я пишу программу Java, которая точно имитирует Microsoft Paint. Он может рисовать четыре разных формы: линии, овалы, прямоугольники и квадраты. Я очень близок к этому, но я придерживаюсь логики рисования квадратов.Рисование квадрата путем перетаскивания мыши
Во время рисования этих фигур есть два предмета. Первая точка (точка 1) - это когда пользователь нажимает кнопку мыши, а вторая точка (точка2), пока пользователь перетаскивает мышь через холст. Я считаю, что рисование Rectangles и Squares должно быть очень похожим, но часть, которая меня смутила, - это рисование квадрата, стороны равны по длине, так что point2 не совсем там, где находится мышь.
Вот FillRect() метод заголовок для справки:
fillRect(x, y, width, height)
Моей работа код для рисования прямоугольников следующим образом:
g.fillRect((((point1.x < point2.x) ? point1.x : point2.x)),
((point1.y < point2.y) ? point1.y : point2.y),
Math.abs(point2.x - point1.x),
Math.abs(point2.y - point1.y));
Я попытался использовать тот же код для рисования квадратов, за исключением изменения параметр высоты должен быть равен параметру ширины, так как квадраты имеют одинаковые стороны длины:
g.fillRect((((point1.x < point2.x) ? point1.x : point2.x)),
((point1.y < point2.y) ? point1.y : point2.y),
Math.abs(point2.x - point1.x),
Math.abs(point2.x - point1.x)); //same as width
Я не знаю, в чем проблема, если сделать ширину и высоту равными. Он работает при рисовании вниз влево или вправо, но, конечно, форма не расширяется, если вы тянете прямо вниз. Нажатие и перетаскивание не работает; квадрат просто перемещается мышью вдоль оси Y, а не расширяется.
Может ли кто-нибудь указать мне в правильном направлении относительно логики рисования квадрата из двух точек?
Я могу объяснить свой код немного лучше, если потребуется.
Для более эффективной помощи, отправьте сообщение [SSCCE] (http://sscce.org/). –