当您处理矩形时,我明白了您的意思。原因是因为转换的初始计算未考虑容器对象的大小。
使用此代替:
tr2.translate( (this.getWidth()/2) - (r.getWidth()*(zoom))/2, (this.getHeight()/2) - (r.getHeight()*(zoom))/2);tr2.scale(zoom,zoom);g.setTransform(tr2);
这样做是在将矩形缩放之前将其平移到面板的中心。在我的测试中,它工作正常。

当您处理矩形时,我明白了您的意思。原因是因为转换的初始计算未考虑容器对象的大小。
使用此代替:
tr2.translate( (this.getWidth()/2) - (r.getWidth()*(zoom))/2, (this.getHeight()/2) - (r.getHeight()*(zoom))/2);tr2.scale(zoom,zoom);g.setTransform(tr2);
这样做是在将矩形缩放之前将其平移到面板的中心。在我的测试中,它工作正常。