【问题标题】:Is it possible to maintain a transparent background in an ImageIcon?是否可以在 ImageIcon 中保持透明背景?
【发布时间】:2014-02-24 04:17:20
【问题描述】:

我正在用 Java 下象棋,我有一个带有黑白方块 JButton 的棋盘。所以基本上我的代码是这样的:

JButton[][] board = new JButton[8][8];
JPanel boardPanel = new JPanel();
boardPanel.setLayout(new GridLayout(8, 8));
for (row = 0; row < 8; row++) {
    for (col = 0; col < 8; col++) {
        board[row][col] = new JButton("");
        board[row][col].setBackground(new Color(70, 70, 70));
        boardPanel.add(board[row][col]);
    }
}

在按钮上我会有相应的棋子。我用透明背景创建了它们,因此它们将显示在黑色或白色方块上。当我将它们添加到按钮时,透明度会消失,但 .jpg 和 .png 格式会消失。我怎样才能解决这个问题?每张图片的格式如下:

ImageIcon whitePawn = new ImageIcon("whitePawn.jpg");

谢谢!

【问题讨论】:

  • 您是否有图像不透明或按钮不透明的问题?
  • 请参阅Making a robust, resizable Chess GUI 了解国际象棋 GUI,该 GUI 使用具有透明度的图像(围绕每个棋子)来显示黑色/白色位于绘制图像的边界之后。该图像使用 PNG 来实现透明度,但您也可以使用 GIF。 JPEG 根本不支持透明度。

标签: java image swing transparency imageicon


【解决方案1】:

JPG 不支持透明度。您可以使用正确的 PNG 文件。

不过有几种替代方法:

  1. 您可以为每件作品创建 2 张图像,例如 whitePawnInWhiteCell.jpg 和 whitePawnInBlackCell.jpg 并使用它们。

  2. 您可以为每个部分定义形状并在单元格上绘制图像之前应用适当的剪辑。

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多