如何在摇摆中设置光标的自定义大小?

swi*_*ift 10 java swing

我使用下面的代码为JPanel设置自定义光标,但是当我运行代码时,它会放大我为光标设置的图像.有没有办法设置用户定义的游标大小?

Toolkit toolkit = Toolkit.getDefaultToolkit();
BufferedImage erasor=new BufferedImage(10,10, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d=(Graphics2D) erasor.createGraphics();
g2d.setPaint(Color.red);
g2d.drawRect(e.getX(),e.getY() ,10, 10);
toolkit.getBestCursorSize(10, 10);
Cursor mcursor=toolkit.createCustomCursor(erasor, new Point(10,10), "Eraser");
setCursor(mcursor);
Run Code Online (Sandbox Code Playgroud)

fis*_*ish 5

一个简单的解决方案是使用"标准"尺寸和透明背景的图像.


小智 5

Windows似乎只允许大小为32x32像素的游标,所以如果你想要另一个大小,你必须解决它.

要获得较小的尺寸,请使用createCustomCursor()32x32图像,其中不需要的像素是透明的.如果使用BufferedImage.TYPE_INT_ARGB,可以使像素透明.

要制作更大的光标,我相信这会奏效:

  • 创建一个完全透明的自定义光标.

  • 使用a mouseMotionListener来获取光标的位置.

  • 在真实(透明)光标的位置绘制光标图像.