1
Batik에서 SVG 이미지를 확장 및 변환하려고합니다. sx
, sy
, tx
및 ty
값이 화면이어야 내가Batik에서 다중 AffineTransformations 적용
AffineTransform at= new AffineTransform();
at.scale(sx, sy);
at.translate(tx, ty);
canvas.setRenderingTransform(at, true);
을 사용하여 줌을 수행하지 SVG는을 조정, 조정합니다.
하지만 여러 배율 조정 작업을 허용하려고합니다. 문제는 다음과 같습니다. 기존 변환에 다른 변환을 "추가"할 수 없습니다.
나는 먼저 오래된 변형을 되 돌린 다음 새로운 변형을 적용함으로써 그것을 시도했다. 그러나 그것은 또 다른 문제를 일으킨다 : 되돌리기가 작동하지 않는다! 원본 이미지보다 작은 이미지로 이어집니다 (축소).
내가 약간 실험 후, 변환을 적용 역수를 적용한 후 다시 원래의 하나를 적용하는 시도 :final AffineTransform at= new AffineTransform();
at.scale(zoom.sx, zoom.sy);
at.translate(zoom.tx, zoom.ty);
canvas.setRenderingTransform(at, true);
...
final AffineTransform reverseAt = at.createInverse();
canvas.setRenderingTransform(reverseAt, true);
...
final AffineTransform reverseBackAt= reverseAt.createInverse();
canvas.setRenderingTransform(reverseBackAt, true);
첫번째 변환이 정확하다. 두 번째 것은 쓰레기로 이어지지 만 원래의 것 (또는 역함수의 역함수)을 다시 적용하면 올바른 결과가 나타납니다.
- 여러 확대 작업을 적용하는 가장 좋은 방법은 무엇입니까 :
그래서 실제로 두 가지 질문이 있습니다?
- 역변환 결과가 예상 한 것과 다른 이유는 무엇입니까?