getscaleinstance 和 scale 之间的区别? (摇摆java)

Difference between getscaleinstance and scale? (swing java)

我看到一段代码使用 getScaleInstance(x,x) 来声明比例。另一方面,我也看到有人用scale来声明秤。有什么区别?

例如:

AffineTransform test= new AffineTransform();
test.scale(1.0,1.0) //1
test=AffineTransform.getScaleInstance(1.0,1.0) //2

1和2有什么区别?

我已经为您检查了文档并发现:

scale() - 是矩阵的变换(在 AffineTransform 内),等于以下代码:

AffineTransform test = new AffineTransform();
AffineTransform scale = AffineTransform.getScaleInstance(1.0, 1.0);
test.concatenate(scale);

正如您从上面的代码中看到的,首先,我们通过调用 AffineTransform.getScaleInstance 创建一个量表,其次,我们将这个量表应用于“测试”。

因此,scale() 是一种更简洁的缩放方式。但是,您应该注意到 scale() 接受两个描述比例因子的 double 参数。因此,如果您以某种方式将比例计算为 AffineTransform,您应该使用 concatenate() 而不是 scale()

总结一下,这些代码做同样的事情,它们是相等的:

AffineTransform test = new AffineTransform();
test.scale(1.0, 1.0);

AffineTransform test = new AffineTransform();
test.concatenate(AffineTransform.getScaleInstance(1.0, 1.0));

第一种方法无疑比第二种方法更简洁。