I saw a code that used getScaleInstance(x,x) to declare the scale. On the other hand, I also saw that some people used scale to declare the scale. What is the difference?
For example:
AffineTransform test= new AffineTransform(); test.scale(1.0,1.0) //1 test=AffineTransform.getScaleInstance(1.0,1.0) //2
What is the difference between 1 and 2?
Advertisement
Answer
I have checked the docs for you and have found that:
scale() – is a transformation of the matrix (inside AffineTransform) which is equal to following code:
AffineTransform test = new AffineTransform(); AffineTransform scale = AffineTransform.getScaleInstance(1.0, 1.0); test.concatenate(scale);
As you can see from code above, firstly, we create a scale by calling AffineTransform.getScaleInstance and, secondly, we apply this scale to the “test”.
So, scale() is a more concise way to do scalling. However, you should notice that scale() accepts two double params which descibe scale factors. Therefore, if you somehow calculate the scale as a AffineTransform, you should use concatenate() instead of scale().
Summaryzing, these codes do the same thing, they are equal:
AffineTransform test = new AffineTransform(); test.scale(1.0, 1.0);
and
AffineTransform test = new AffineTransform(); test.concatenate(AffineTransform.getScaleInstance(1.0, 1.0));
The first approach is unquestionable more concise than the second one.