gpt4 book ai didi

java - 仅用不同颜色替换旋转图像的角

转载 作者:行者123 更新时间:2023-12-01 09:06:53 27 4
gpt4 key购买 nike

我目前正在制作一款需要旋转图像的游戏。为了旋转它,我使用以下代码。

public ManipulableImage rotate(double degrees){
BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = rotatedImage.createGraphics();
g.rotate(Math.toRadians(degrees), image.getWidth()/2, image.getHeight()/2);
/*
ManipulableImage is a custom class that makes it easier to manipulate
an image code wise.
*/
g.drawImage(image, 0, 0, null);
return new ManipulableImage(rotatedImage, true).replace(0, -1);
}

代码确实旋转了图像,但它使本应透明的角变成黑色。我的渲染器将 rgb 值 -1 识别为透明值,并且当该值存在时不会更改像素。所以,我想将角的 rgb 值从 0(黑色)更改为 -1(透明)。

唯一的问题是,我不能简单地迭代图像并替换黑色像素是因为原始图像中还有其他黑色像素。所以我的问题是,如何仅替换旋转创建的黑色像素。

(抱歉,我无法提供图像示例,我不确定如何使用这台计算机进行屏幕截图。)

最佳答案

The graphics object has no context to color these new pixels, so it simply colors them black.

BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);

您应该使用以下内容,以便 BufferedImage 支持透明度:

BufferedImage.TYPE_INT_ARGB

然后在绘画代码中你可以使用:

g.setColor( new Color(0, 0, 0, 0) );
g.fillRect(0, 0, image.getWidth(), image.getHeight());
g.rotate(...);
g.drawImage(...);

关于java - 仅用不同颜色替换旋转图像的角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200977/

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