【发布时间】:2012-03-11 23:32:37
【问题描述】:
我对某个程序的缩放功能有疑问。这是交易,我有一个画布,它扩展了一个 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*/
}
【问题讨论】:
-
正如我尝试使用 Graphics2d.scale(double,double);我注意到 JPanel 的大小保持不变。我需要它,我仍然可以访问原始 JPanel 的其他部分