【问题标题】:Image parameters for setting cursor in Java SwingJava Swing中设置光标的图像参数
【发布时间】:2014-11-06 15:49:08
【问题描述】:

我在 Java Swing 应用程序中显示自定义光标时遇到问题。

我通过这段代码设置光标:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("sword.png");
Point hotSpot = new Point(0,0);
Cursor cursor = toolkit.createCustomCursor(image, hotSpot, "Sword");
panel.setCursor(cursor);

此图片(尺寸:32x32px)正常显示(只有橡胶颜色从灰色变为黄色):

但此图像(尺寸:128x128)显示不正确 - 小于 128x128(可能为 64x64)且没有某些颜色:

这发生在我在 Linux Ubuntu 上运行应用程序时。

当我在 Windows 上运行该应用程序(在 Win 8 上测试)时,铅笔图像显示没有任何问题,剑图像的颜色略有失真。它们都具有相同的尺寸(32x32)。

我的问题是 - 用于设置光标的图像应该具有哪些参数(大小、类型、质量、颜色数量)以及它是否取决于 Java Swing 或特定操作系统?如果我应该以另一种方式设置光标,因为我的代码不正确。

【问题讨论】:

    标签: java image swing cursor


    【解决方案1】:

    问题是大多数操作系统都希望大小为 32x32,如果它更大,它会尝试将其调整为正确的大小,因此可能会出现无法正确显示的情况。所以你可以假设正确的尺寸应该是 32x32。

    你可以使用:

    getBestCursorSize(int preferredWidth, int preferredHeight)
    

    它返回所需大小的最接近的受支持光标尺寸。看看 API => http://docs.oracle.com/javase/7/docs/api/java/awt/Toolkit.html#getBestCursorSize%28int,%20int%2

    作为一种良好且安全的解决方案,您应该使用 Photoshop、GIMP 或其他好的程序将图像调整为受支持的大小。

    【讨论】:

    • 感谢您的回答。我测试了getBestCursorSize(128, 128) - 这是剑图像的大小,它返回了我最接近的支持尺寸 64 x 64。所以我将 GIMP 中该图像的大小更改为 32x32 和 64x64 并测试了它们,但是显示颜色的问题图像仍然存在(但看起来比工具包实现调整大小更好)。当我将 GIMP 中的图像导出为 gif 或 png 类型时,它看起来也有点不同。您认为这可能是该图像的类型或其颜色数量的问题吗?我是图形问题的初学者。
    • 一些操作系统(看着你的 Windows)也可能“截断”图像。
    • @Petr.M 有可能在某些操作系统(如windows)下,光标只支持256色,图像可能会被抖动以支持这个...
    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多