Как получить функцию масштабирования для фокусировки на нужной точке в JPanel? - PullRequest
0 голосов
/ 29 апреля 2020

Я использую затмение, и у меня есть JPanel внутри scrollPane.

Я пытаюсь увеличивать и уменьшать масштаб, используя метод масштабирования (z, z), где z - это величина, по которой я хочу масштабировать. Это работает, но фокус - источник, когда я хочу, чтобы это было середина экрана. Я пытался использовать функцию translate (), но это не работает должным образом.

Я создал функцию для регулировки полос прокрутки, но это не происходит гладко.

Есть ли способ заставить его сфокусироваться в середине экрана?

вот мой код, если это поможет:

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2= (Graphics2D) g;
        double z = WindowTester.getZoomFactor();
        zoom(g2,z);
        for(int i = 0; i < points.size(); i++) {
            g2.drawOval(points.get(i).x-5, points.get(i).y-5, 10, 10);
        }
        g2.drawLine(5, 5,(int) Math.round(this.width-5*z), 5);
        g2.drawLine((int)  Math.round(this.width-5*z), 5,(int)  Math.round(this.width-5*z),      (int)  Math.round(this.height-5*z));
        g2.drawLine((int)  Math.round(this.width-5*z), (int)  Math.round(this.height-5*z), 5,(int)  Math.round(this.height-5*z));
        g2.drawLine(5, (int)  Math.round(this.height-5*z), 5, 5);
    }


    public void zoom(Graphics2D g2,double z) {
        g2.scale(z, z);
        this.setPreferredSize(new Dimension((int) Math.round(width*z),(int) Math.round(height*z)));
    }
...