2014-11-06 21 views
0

我在Java Swing应用程序中显示自定义游标时遇到麻烦。用于在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或特定的操作系统?如果我应该以另一种方式设置游标,因为我的代码不正确。

回答

2

问题是,大多数操作系统需要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或其他好的程序,以支持的大小。

+0

谢谢你的回答。我测试了'getBestCursorSize(128,128)' - 这是剑形图像的大小,它返回了我最接近的支持尺寸64 x 64.所以我将GIMP中该图像的大小更改为32x32和64x64并测试了它们,但问题显示该图像的颜色仍然存在(但看起来比Toolkit实施调整大小更好)。当我以gif或png格式导出GIMP图像时,它看起来有点不同。你认为,这可能是该图像的类型或其颜色数量的问题?我是图形问题的初学者。 – 2014-11-06 17:33:09

+0

某些操作系统(看着你的Windows)也可能会“截断”图像。 – MadProgrammer 2014-11-07 00:32:06

+0

@ Petr.M在某些操作系统(如windows)下,游标可能只支持256种颜色,图像可能会被getter抖动以支持这个... – MadProgrammer 2014-11-07 00:32:39

相关问题