【问题标题】:LWJGL Icon only showing in taskbarLWJGL 图标仅显示在任务栏中
【发布时间】:2014-08-03 04:41:34
【问题描述】:

我已经设置了一种将图像加载到 ByteBuffer 中的方法并称为Display.setIcon(),这可以...部分工作。这将设置任务栏的图标,但将窗口的图标保留为默认的 LWJGL 图标。我需要调用另一个Display 方法吗?还是这与windows有关。

如果需要,这里是加载图标的方法:

public static final ByteBuffer[] getIcon()
{
    Image image = Toolkit.getDefaultToolkit().getImage("rw_icon.PNG");
    MediaTracker tracker = new MediaTracker(new JPanel());
    tracker.addImage(image, 0);

    try
    {
        tracker.waitForAll();
    }
    catch(InterruptedException e)
    {
        e.printStackTrace();
    }
    tracker.removeImage(image);

    BufferedImage bufImage = new BufferedImage(32, 32, BufferedImage.TYPE_4BYTE_ABGR);
    Graphics2D graphics = bufImage.createGraphics();
    graphics.drawImage(image, 0, 0, null);
    graphics.dispose();
    image.flush();

    ByteBuffer buffer = ByteBuffer.allocateDirect(32*32*4);
    buffer.clear();
    byte[] bufferData = (byte[])bufImage.getRaster().getDataElements(0, 0, 32, 32, null);
    buffer.put(bufferData);
    buffer.rewind();

    return (new ByteBuffer[] {buffer});
}

【问题讨论】:

    标签: java icons lwjgl


    【解决方案1】:

    没有。

    您只需将包含两个版本图标(16x16、32x32)的数组传递给 setIcon(..) 方法。

    您似乎误解了 ByteBuffer[]。您应该传递一个 不同 ByteBuffers 数组。不仅仅是一个包含一个元素的 ByteBuffer 数组。因此,最好创建一个新方法,它基本上只是执行您的 getIcon() 方法所做的,但需要一个字符串作为文件路径。这样您就可以轻松地创建 real 图标字节缓冲区数组。

    public static int setIcon(java.nio.ByteBuffer[] icons)

    为显示设置一个或多个图标。 在 Windows 上,您应该至少提供一个 16x16 图标和一个 32x32。 Linux(和类似平台)期望一个 32x32 图标。 Mac OS X 应提供一个 128x128 图标 实现将使用提供的 ByteBuffers 和图像数据 RGBA(大小必须是 2 的幂)并执行任何转换 需要特定平台。 注意:显示屏会显示 提供的字节缓冲区数组的深拷贝,用于 当您来回全屏模式时重新创建图标。你 因此每个实例只需要设置一次图标。

    http://lwjgl.org/javadoc/org/lwjgl/opengl/Display.html#setIcon(java.nio.ByteBuffer[])

    【讨论】:

    • 我想我浏览文档的速度有点太快了。我现在已经完全按照你说的那样工作了。谢谢!此外,这让我对它为什么期望 ByteBuffer(s) 作为一个数组感到好奇。
    • @BoltReel 很高兴它有帮助!有时您也需要 24x24 版本,至少文档是这么说的,但不确定 ;)
    猜你喜欢
    • 2011-06-15
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多