我对程序的缩放功能有疑问。这是这笔交易,我得到了一个画布,它延伸了一个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*/
}
答案 0 :(得分:1)
您可以在BufferedImage上绘制所有内容。可以缩放图像的图形以实现所需的缩放效果。
但是无论如何,如果你在面板的大小(首选大小)内使用面板的JScrollPane必须适应在需要时显示滚动条。