I have the flip left functionality down (see code below) but I can't seem to find how to do a flip right. Are the calculations similar?
我有左翻功能(见下面的代码),但我似乎无法找到如何做右翻。计算是否相似?
Flip Left:
{
gb.drawImage(img, 0, 0, null);
gb.dispose();
AffineTransform tx = new AffineTransform();
tx.translate(img.getHeight(null) / 2, img.getWidth(null) / 2);
tx.rotate(Math.PI / 2);
tx.translate(-img.getHeight(null) / 2, -img.getWidth(null) / 2);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
buffImg = op.filter(buffImg, null);
}
1 个解决方案
#1
If you want to rotate in multiples of 90 degrees left or right, you could use the AffineTransform.getQuadrantRotateInstance(int) methods instead:
如果要以向左或向右90度的倍数旋转,可以使用AffineTransform.getQuadrantRotateInstance(int)方法:
AffineTransform rotateLeft = AffineTransform.getQuadrantRotateInstance(1);
AffineTransform rotateRight = AffineTransform.getQuadrantRotateInstance(-1);
There's also anchored versions:
还有锚定版本:
AffineTransform rotateRightCentered = AffineTransform.getQuadrantRotateInstance(-1, centerX, centerY);
If you like to use radians, yes, it's similar. 90 degrees left is -(Math.PI / 2)
.
如果你喜欢使用弧度,是的,它是相似的。剩下90度是 - (Math.PI / 2)。
#1
If you want to rotate in multiples of 90 degrees left or right, you could use the AffineTransform.getQuadrantRotateInstance(int) methods instead:
如果要以向左或向右90度的倍数旋转,可以使用AffineTransform.getQuadrantRotateInstance(int)方法:
AffineTransform rotateLeft = AffineTransform.getQuadrantRotateInstance(1);
AffineTransform rotateRight = AffineTransform.getQuadrantRotateInstance(-1);
There's also anchored versions:
还有锚定版本:
AffineTransform rotateRightCentered = AffineTransform.getQuadrantRotateInstance(-1, centerX, centerY);
If you like to use radians, yes, it's similar. 90 degrees left is -(Math.PI / 2)
.
如果你喜欢使用弧度,是的,它是相似的。剩下90度是 - (Math.PI / 2)。