gpt4 book ai didi

java - 旋转图像对象

转载 作者:行者123 更新时间:2023-11-30 08:12:54 26 4
gpt4 key购买 nike

我有一个方法 getImage() 需要旋转一个 Image,将它存储在一个新变量中,然后返回那个新的 Image .这是我的尝试,图像似乎是空的或什么的。它只是没有出现在屏幕上:

public Image getImage() {
buffImage.createGraphics().rotate(direction);
return buffImage;
}

当我取出 buffImage.createGraphics().rotate(direction); 时,图像在屏幕上绘制得很好,没有任何问题,但当然没有旋转。

最佳答案

因此,基于 this answer 中的示例,您应该能够设计出一种旋转方法,可以将源图像旋转给定的度数,例如...

  // Make sure you actually load some image and assign it to this
// variable, otherwise you will have a NullPointerException to
// deal with
private BufferedImage source;

public Image rotateBy(double degrees) {

// The size of the original image
int w = source.getWidth();
int h = source.getHeight();
// The angel of the rotation in radians
double rads = Math.toRadians(degrees);
// Some nice math which demonstrates I have no idea what I'm talking about
// Okay, this calculates the amount of space the image will need in
// order not be clipped when it's rotated
double sin = Math.abs(Math.sin(rads));
double cos = Math.abs(Math.cos(rads));
int newWidth = (int) Math.floor(w * cos + h * sin);
int newHeight = (int) Math.floor(h * cos + w * sin);

// A new image, into which the original can be painted
BufferedImage rotated = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = rotated.createGraphics();
// The transformation which will be used to actually rotate the image
// The translation, actually makes sure that the image is positioned onto
// the viewable area of the image
AffineTransform at = new AffineTransform();
at.translate((newWidth - w) / 2, (newHeight - h) / 2);

// And we rotate about the center of the image...
int x = w / 2;
int y = h / 2;
at.rotate(rads, x, y);
g2d.setTransform(at);
// And we paint the original image onto the new image
g2d.drawImage(source, 0, 0, null);
g2d.dispose();

return rotated;
}

关于java - 旋转图像对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30204114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com