У меня есть JPanel, который рисует формы и позволяет выбирать эти формы. Я начинаю добавлять возможность преобразования этого представления с помощью объекта AffineTransform в сочетании с объектом Graphics2D.
В моем методе paint (), конечно, передается объект Graphics. Я устанавливаю новое преобразование для этого объекта (в данном случае просто масштабирую объекты на 2), и все в методе paint () отрисовывается правильно в соответствии с AffineTransform Я только что установил. На данный момент часть рисования фигур отлично работает! Теперь перейдем к выбору формы ...
Выбор формы начинается в событии mousePressed () (My JPanel реализует интерфейс MouseListener). Когда у меня есть событие mousePressed (), я вызываю this.getGraphics (), чтобы получить объект Graphics JPanel. Затем я прикрепляю его к объекту Graphics2D и вызываю для него getTransform (), чтобы получить текущее преобразование, чтобы я мог сопоставить выбранную точку с преобразованной точкой. Однако, когда я вызываю getTransform (), AffineTransform возвращается к AffineTransform по умолчанию [1, 0, 0], [0, 1, 0].
Я думаю, что, возможно, объект Graphics, переданный в Paint () JPanel, отличается от того, который есть у меня в JPanel, но я не уверен в этом. Кто-нибудь знает, что здесь происходит?