gpt4 book ai didi

java - 如何保存 JPanel 的特定部分?

转载 作者:行者123 更新时间:2023-11-30 07:54:51 24 4
gpt4 key购买 nike

我正在开发一款国际象棋游戏,我想让玩家选择棋盘的颜色。因此我将使用这种方法:

    static void createBoard(Graphics g) {

Color bright = new Color(255, 225, 181); //player chooses color
Color dark = new Color(188, 141, 105); //player chooses color
boolean darkTile = false;

for (int y = spaceY; y < (spaceY + BOARDHEIGHT); y += TILESIZE) {
for (int x = spaceX; x < (spaceX + BOARDWIDTH); x += TILESIZE) {
if (darkTile) {
g.setColor(dark);
} else {
g.setColor(bright);
}
g.fillRect(x, y, TILESIZE, TILESIZE);
darkTile = !darkTile;
}
darkTile = !darkTile;
}
BufferedImage overlay;
try {
overlay = ImageIO.read(new File("overlay.png"));
JLabel label = new JLabel(new ImageIcon(overlay));
g.drawImage(overlay, spaceX, spaceY, BOARDWIDTH, BOARDHEIGHT, null);
} catch (IOException e) {}
}

我想将其保存为 BufferedImage,这样我就不必一直运行此方法。

那么我怎样才能只保存我的 JPanel 的这一部分,而没有棋盘之外的东西呢? (会多画)

最佳答案

This I would like to save as a BufferedImage,

不知道您需要将 BufferedImage 保存到文件中。您可以只创建一个 BufferedImage 以供应用程序启动时使用。如果任何用户颜色发生变化,您可以重新创建 BufferedImage。

您可以直接绘制到 BufferedImage:

BufferedImage image = new BufferedImage(boardSize, boardSize, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();

// draw the squares onto board

g2d.dispose();

现在您的 createBoard() 方法可能应该返回 BufferedImage,以便您的应用程序可以使用它。

关于java - 如何保存 JPanel 的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609063/

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