# Custom Cursor: Problem mit Größe



## hdi (23. Aug 2009)

Hey, hab mir gerade einen eigenen Cursor gemacht via:


```
Cursor c = Toolkit.getDefaultToolkit().createCustomCursor(IconPool.getInstance().getImage("pencil.png"),new Point(0, 0), "Pencil");
```

... der wird auch angezeigt, aber leider nicht in der Größe des eigentlichen Bildes. Das ist 15x15 Pixel, der angezeigte Cursor ist allerdings viel größer.

Ich hab mir auch mal 


```
Toolkit.getDefaultToolkit().getBestCursorSize(15, 15)
```

ausgeben lassen. Da returned er mir eine Dimension von 32x32. Aber selbst wenn ich dann das Bild in diese Größe verändere, naja dann ist es wahrscheinlich sogar diese Größe xD

Auf jeden Fall krieg ich es nicht kleiner ?! Benutze ein PNG-Bild. Jemand einen Tipp?

Danke


----------



## lumo (4. Sep 2009)

habe das selbe problem...
das einzige was mir als schmutzige lösung eingefallen ist...
das bild vergrößern und den teil den du nicht brauchst transparent setzen...

oder hast du bereits einen saubere lösung gefunden??
brauchte einen 10x10 cursor...


----------



## andre111 (6. Sep 2009)

In der API steht zu getBestCursorSize() folgendes:


> Returns the supported cursor dimension which is closest to the desired sizes.


Hört sich so an, als ob es nicht möglich wär selber die genaue Cursorgröße zu bestimmen (außer der Trick mit der Transparenz).


----------



## lumo (6. Sep 2009)

ich habs jetzt so gemacht, dass ich ein transparentes bild erstelle 32x32 und dann das kleine icon für den cursor raufkopiere - mach ich dynamisch, da mein cursor sich recht oft ändert.

wenns jemand braucht/interessiert, kann ich noch den code dazu posten


----------



## hdi (6. Sep 2009)

ich könnt's gebrauchen :meld:
...danke


----------



## lumo (6. Sep 2009)

bei mir werden zu jedem key ein icon zugewiesen.
alle icons sind bei mir in einer hashmap<Integer, ImageIcon>
wobei Constants.EMPTY ein transparentes bild ist.

```
public final Cursor getCursorByIndex(int key) {
			BufferedImage transparent = (BufferedImage) icons.get(
					Constants.EMPTY).getImage();
			BufferedImage icon = (BufferedImage) icons.get(allTypes.get(key))
					.getImage();
			BufferedImage cur = new BufferedImage(32, 32,
					BufferedImage.TYPE_INT_ARGB);
			Graphics g = cur.createGraphics();
			g.drawImage(transparent, 0, 0, 32, 32, 0, 0, 1, 1, null);
			g.drawImage(icon, 0, 0, 10, 10, 0, 0, 10, 10, null);
			Toolkit toolkit = Toolkit.getDefaultToolkit();

			// Creating the Custom Cursor
			// We put together an image with a hot spot:
			// all images are 10x10 -> make the hotspot in the center!
			return toolkit.createCustomCursor(cur, new Point(5, 5),
					"custom cursor");
		}
	}
```

du solltest die funktion eigentlich leicht adapieren können, dass du sie in dein projekt einbauen kannst...
(ev. kann man sich das transparente bild laden sparen indem man das bild schon transparent erstellt, weiss ich aber nicht)

greets


----------

