Как я могу нарисовать перевернутый прямоугольник в Java, используя качели?
Используя метод g.drawRect (x, y, width, height), создание прямоугольника путем перетаскивания мышью прошло успешно, но произошла небольшая ошибка.
Если вы перетащите вточка (x2, y2 | x2> x1 && y2> y1) больше, чем первая точка (x, y), будет работать нормально.
Однако, в противном случае, если координаты перетаскиванияточка меньше, чем координаты первой точки щелчка, она рисуется в противоположном направлении, а не в направлении точки перетаскивания.
Даже если бы я попытался нарисовать ее в обратном направлении, если (), я не смог бывыяснить, что делать.
Направление, которое я хочу, похоже на перетаскивание в окне, но для меня это немного сложно.Пожалуйста, дайте мне подсказку, чтобы преодолеть эту трудную поездку.
↓ Вот мой код
class Rect {
int x, y, w, h;
}
public class Rectangle extends JPanel{
int i = 0;
int x, y = 0;
Rect [] ary = new Rect[100];
public Rectangle() {
addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
if(i>100) return;
ary[i] = new Rect();
ary[i].x = e.getX(); ary[i].y = e.getY();
x= ary[i].x; y = ary[i].y;
}
@Override
public void mouseReleased(MouseEvent e) {
ary[i].w = Math.abs(ary[i].x-e.getX());
ary[i].h = Math.abs(ary[i].y- e.getY());
i++;
repaint();
}
});
addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
ary[i].w = Math.abs(ary[i].x-e.getX());
ary[i].h = Math.abs(ary[i].y- e.getY());
repaint();
}
public void mouseMoved(MouseEvent e) {
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
for(Rect r:ary){
if(r !=null) {
g.setColor(Color.BLACK);
g.drawRect(r.x, r.y, r.w, r.h);
}
}
}
}
, пожалуйста, помогите мне
Проблемное изображение