繁体   English   中英

Jpanel缩放就像画图程序一样

[英]Jpanel Zooming like in a paint program

我在程序的缩放功能上遇到问题。 这是交易,我得到了一个画布,该画布扩展了jpanel并在其上绘制了网格。 我的问题是如何实现缩放功能。 通过缩放jpanel,网格上的每个小方块将分为3x3。

我尝试进行3面板缩放,3面板大小不同的3面板,并在网格上进行不同划分,但是这会占用大量内存和运行时间。 我只实现了固定大小的1个jpanel,并会使用Graphics2d.scale(...)对其进行缩放,但在鼠标坐标和jpanel上似乎有偏移。 我知道它可以解决,但我的另一个担心是使用jscrollpane实现了jpanel。 将修复坐标偏移将解决此问题,我没有尝试过,因为我不知道如何。

在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*/

}

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

但是无论如何,如果您在面板尺寸(首选尺寸)内使用面板时使用JScrollPane,则必须对其进行调整以在需要时显示滚动条。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM