gpt4 book ai didi

java - JPanel 上的颜色反转

转载 作者:行者123 更新时间:2023-11-29 04:22:43 25 4
gpt4 key购买 nike

我正在尝试使用 BufferedImage 在放置在 JFrame 内部的 JPanel 上绘制线条网格。

到目前为止,我已经让垂直线工作(有点),但我的查询与线和背景的 Color 有关。

当我运行应用程序时,出现了 JFrameJPanel,但是背景的 Color 是黑色,线条是 White 。就好像颜色颠倒了一样。 (见下图)

JPanel view

我没有在主类中设置任何ColorJPanel 的源代码如下-

public class MyPanel extends JPanel {

boolean[][] grid;
BufferedImage image;
Graphics2D imageG;

public MyPanel(boolean[][] newGrid) {
grid = newGrid;
image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
imageG = image.createGraphics();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Integer cellWidth = this.getWidth() / grid.length;

for (Integer i = 0; i < grid.length + 1; i++) {
imageG.drawLine(i * cellWidth, 0, i * cellWidth, this.getHeight());
}

Graphics2D tempg = (Graphics2D) g;
tempg.fillRect(0, 0, this.getWidth(), this.getHeight());
//Draw BufferedImage
tempg.drawImage(image, 0, 0, this);
//this.getGraphics().drawImage(lineImage, 0, 0, this);
}
}

最佳答案

使用 BufferedImage.TYPE_INT_ARGB,它表示具有打包成整数像素的 8 位 RGBA 颜色分量的图像。

和之前使用的 BufferedImage.TYPE_INT_RGB 表示一个图像,其中 8 位 RGB 颜色分量被打包成整数像素。它也缺少transparent Colors 以及 undefined Colors and因此它用 Color.BLACK 说明了那些。

从上面修正的源代码-

    public MyPanel(boolean[][] newGrid) {
grid = newGrid;
//Represents an image with 8-bit RGBA color components packed into integer pixels.
image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_ARGB);
imageG = image.createGraphics();
//Set the single pixel line color to YELLOW using BufferedImage instance
imageG.setColor(Color.YELLOW);
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Integer cellWidth = this.getWidth() / grid.length;

Graphics2D tempg = (Graphics2D) g;
//Set the blocks and rest of it part to color RED
tempg.setColor(Color.RED);

for (Integer i = 0; i < grid.length + 1; i++) {
imageG.drawLine(i * cellWidth, 0, i * cellWidth, this.getHeight());
}

tempg.fillRect(0, 0, this.getWidth(), this.getHeight());
//Draw BufferedImage
tempg.drawImage(image, 0, 0, this);
//this.getGraphics().drawImage(lineImage, 0, 0, this);
}

希望对您有所帮助,谢谢。

关于java - JPanel 上的颜色反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115816/

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