2015-05-05 20 views
1

我有翻轉左功能下來(見下面的代碼),但我似乎無法找到如何做一個右翻轉。計算是否相似?如何使用Java中的AffineTransform將圖像向右翻轉?

翻轉左:

{ 
    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

你的意思是像[這](http://stackoverflow.com/questions/20275424/rotating-image-with-aff- infinetransform/20280225#20280225)? – MadProgrammer

+1

或類似[this](http://stackoverflow.com/questions/12824684/change-the-angle-position-of-a-drawing-with-a-algorithm-in-java/12826882#12826882) – MadProgrammer

+0

Second例子幫了很多!謝謝@MadProgrammer – user2840682

回答

0

如果你想在90度的倍數旋轉向左或向右,你可以使用AffineTransform.getQuadrantRotateInstance(int)方法代替:

AffineTransform rotateLeft = AffineTransform.getQuadrantRotateInstance(1); 
AffineTransform rotateRight = AffineTransform.getQuadrantRotateInstance(-1); 

有也是固定的版本:

AffineTransform rotateRightCentered = AffineTransform.getQuadrantRotateInstance(-1, centerX, centerY); 

如果你喜歡使用弧度,是的,它是相似的。左側90度是-(Math.PI/2)