2014-11-06 22 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

相關問題