gpt4 book ai didi

java - 在黑/白背景上旋转的 2D 图形

转载 作者:行者123 更新时间:2023-11-30 03:35:12 25 4
gpt4 key购买 nike

我有一个函数可以在 g2 组件上绘制旋转图片,但由于某种原因我无法给它任何彩​​色背景...我试图使用方法 .setColor() 和 .setBackground() 但没有用。我在这里看到过类似的案例Graphics2D: Drawing black on white?但这并没有真正帮助。这是我的功能:

        public void rotateImage1(double degrees, ImageObserver o){

double sin = Math.abs(Math.sin(Math.toRadians(degrees)));
double cos = Math.abs(Math.cos(Math.toRadians(degrees)));
ImageIcon icon = new ImageIcon(this.spiral);
int w = icon.getIconWidth();
int h = icon.getIconHeight();
int neww = (int)Math.floor(w*cos+h*sin);
int newh = (int)Math.floor(h*cos+w*sin);
BufferedImage blankCanvas = new BufferedImage(neww, newh, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D)blankCanvas.getGraphics();
if(PhotoEdit.black)
g2.setColor(Color.BLACK);
else
g2.setColor(Color.WHITE);
g2.translate((neww-w)/2, (newh-h)/2);
g2.rotate(Math.toRadians(degrees), icon.getIconWidth()/2, icon.getIconHeight()/2);

g2.drawImage(this.spiral, 0, 0, o);
this.spiral = blankCanvas;
}

PhotoEdit.black 是一个 boolean 变量,如果用户选择带有黑色背景选项的复选框,则该变量为 true。

最佳答案

您正在设置图形中的颜色,但没有将其绘制到面板上。

您可以使用 g2.setColor(...)g2.fillRect(...) 并指定覆盖整个面板的坐标,然后绘制您的图像在顶部。

fillRect 的文档:http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#fillRect%28int,%20int,%20int,%20int%29

关于java - 在黑/白背景上旋转的 2D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28154629/

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