Jpanel在绘画程序中缩放

时间:2012-02-21 16:29:48

标签: java swing zoom jpanel

我对程序的缩放功能有疑问。这是这笔交易,我得到了一个画布,它延伸了一个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 个答案:

答案 0 :(得分:1)

您可以在BufferedImage上绘制所有内容。可以缩放图像的图形以实现所需的缩放效果。

但是无论如何,如果你在面板的大小(首选大小)内使用面板的JScrollPane必须适应在需要时显示滚动条。