Java2D旋转后图像质量丢失

时间:2014-01-10 11:44:51

标签: java image rotation awt paint

我正在使用以下代码来旋转我的图片

public class Field extends Canvas implements ActionListener {

    @Override
    public void paint(Graphics grphcs) {        
        super.paint(grphcs);         
        Graphics2D g2d = (Graphics2D) grphcs;
        AffineTransform affine = new AffineTransform();
        int angle = car.getAngle();
        Image image = car.getCarImage();       
        int x = (int) car.getX();
        int y = (int) car.getY();

        affine.rotate(Math.toRadians(angle), x + image.getWidth(null) / 2, 
               y + image.getHeight(null) / 2);
        g2d.setTransform(affine); 
        g2d.drawImage(image, x, y, null);     
    }  
    ....

如果角度等于,例如,5图像质量丢失。

enter image description here

有什么问题?

2 个答案:

答案 0 :(得分:1)

你必须使用抗锯齿,试试这个:

g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

例如: 右图标是抗锯齿的 http://i.imgur.com/yeJux.png

答案 1 :(得分:0)

其他答案是正确的一半:您的问题可以通过设置RenderingHint来解决。但在这种情况下,它不是抗锯齿。

尝试在应用转换之前添加此内容:

g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
                     RenderingHints.VALUE_RENDER_QUALITY);