Jpanel Zooming как в программе рисования - PullRequest
0 голосов
/ 21 февраля 2012

У меня проблема с функцией масштабирования в программе.Вот сделка, я получил холст, который расширяет jpanel и на нем нарисована сетка.Моя проблема заключается в том, как реализовать функцию масштабирования.При увеличении jpanel каждый маленький квадрат на сетке будет разделен на 3x3.

Я пытался сделать 3-х панельное увеличение, 3-х панелей 3-х разных размеров с разным делением на сетке, но это занимает много памяти и времени выполнения.Я реализую только 1 jpanel с фиксированным размером и увеличу его, используя Graphics2d.scale (...), но, похоже, смещение координат мыши и jpanel.Я знаю, что это можно исправить, но другая моя проблема - jpanel реализован с помощью jscrollpane.Исправление смещения координат решит эту проблему, я не пробовал, потому что не знаю, как.

рисовать в jpanel, рисуя сетку

public void paint(Graphics g){
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;

    int x=0;int y=0;
    g2.setColor(Color.GRAY);
    for(int i=1; i<this.divisions; i++){
        x = i *divSize;
        g2.drawLine(x, 0, x, this.size);
    }
    for(int i=1; i<this.divisions; i++){
        y = i *divSize;
        g2.drawLine(0, y, this.size, y);
    }
            /*code for filling the small squares with colors*/

}

1 Ответ

1 голос
/ 22 февраля 2012

Вы можете нарисовать весь свой контент на BufferedImage.Графика изображения может быть масштабирована для достижения желаемого эффекта масштабирования.

Но в любом случае, если вы используете JScrollPane с панелью внутри размера панели (предпочтительный размер), она должна быть адаптирована для отображения полос прокрутки, когда это необходимо.

...