a在放大图像时遇到问题。我有一个看起来像这样的png文件: raw png
图片为8px * 8px,上面有一些红色直线。 但是,当我使用Java绘制此图像并将其放大时,会发生这种情况:java image
正如您几乎可以看到的那样,该线不是完全笔直。它总是偏离一个像素,并形成这种波浪形。如果图像被绘制在框架的其他位置,则“波浪”位于其他位置。图像旋转了90°,但我没有旋转就对其进行了测试,它仍然在那里。除此之外,我还需要旋转图像。
有什么办法可以解决这个问题?我在同一Graphics2D对象中启用了文本抗锯齿功能。对此是否也有一定的要求?
代码
private void loadImage(String path,int field,int imageNumber) {
BufferedImage image;
image = new Resource().readImg(path);
images[field][imageNumber][0] = image;
images[field][imageNumber][1] = rotateclockwise90(image);
images[field][imageNumber][2] = rotateclockwise90(rotateclockwise90(image));
images[field][imageNumber][3] = rotateclockwise90(rotateclockwise90(rotateclockwise90(image)));
}
private BufferedImage rotateclockwise90(BufferedImage src) {
int width = src.getWidth();
int height = src.getHeight();
BufferedImage dest = new BufferedImage(height,width,src.getType());
Graphics2D graphics2D = dest.createGraphics();
graphics2D.translate((height - width) / 2,(height - width) / 2);
graphics2D.rotate(Math.PI / 2,height / 2,width / 2);
graphics2D.drawRenderedImage(src,null);
return dest;
}
程序启动时,我会沿所有四个方向旋转图像,因此程序运行时不必一遍又一遍地进行操作。
public BufferedImage getTile(int type,int part,int rotation) {
return images[type][part][rotation];
}
然后我要做的就是调用此get方法并绘制图像:
g2d.drawImage(tiles.getShipTile(type,part,rotation),x,y,null);