gpt4 book ai didi

java - Jpanel 像绘画程序一样缩放

转载 作者:行者123 更新时间:2023-12-01 15:32:44 26 4
gpt4 key购买 nike

我在程序的缩放功能上遇到了问题。事情是这样的,我得到了一个 Canvas ,它扩展了 jpanel 并在上面绘制了一个网格。我的问题是如何实现缩放功能。通过放大 jpanel,网格上的每个小方 block 将分为 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*/

}

最佳答案

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

但是无论如何,如果您将 JScrollPane 与面板一起使用,则面板的大小(首选大小)必须进行调整,以便在需要时显示滚动条。

关于java - Jpanel 像绘画程序一样缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com