Java 如何使用AWT硬件光标使用两种以上的颜色?
我想为我正在制作的电脑游戏使用硬件光标,AWT允许我这样做,并指定要使用的图像,但它只接受2种颜色和透明度,这是相当有限的Java 如何使用AWT硬件光标使用两种以上的颜色?,java,colors,cursor,awt,Java,Colors,Cursor,Awt,我想为我正在制作的电脑游戏使用硬件光标,AWT允许我这样做,并指定要使用的图像,但它只接受2种颜色和透明度,这是相当有限的 我相当肯定,在大多数当前系统上使用更大的颜色深度是可能的,有没有办法在AWT中实现这一点?还有其他的方法吗?我对AWT的记忆有些零散,但我认为它不一定能让你改变硬件光标。相反,它允许您定义自定义游标,并且由特定的工具箱实现(java.awt.toolkit的子类型)决定如何更改游标 类似地,虽然在API级别支持多色游标,但您的特定工具包可能不支持多色游标,您可能需要获取系统
我相当肯定,在大多数当前系统上使用更大的颜色深度是可能的,有没有办法在AWT中实现这一点?还有其他的方法吗?我对AWT的记忆有些零散,但我认为它不一定能让你改变硬件光标。相反,它允许您定义自定义游标,并且由特定的工具箱实现(java.awt.toolkit的子类型)决定如何更改游标
类似地,虽然在API级别支持多色游标,但您的特定工具包可能不支持多色游标,您可能需要获取系统的toolkit对象并调用getMaximumCursorColors()。如果这个数字不够高,我不确定是否有办法通过Java绕过它。如果调用Toolkit.getMaximumCursorColors并返回最大值2,那么AWT将使用这些来渲染光标。要解决这个问题,您可以制作一个完全透明的图像,并将其设置为光标。然后,在你用来绘制游戏的任何组件上添加一个鼠标侦听器,然后在当前鼠标坐标下绘制或绘制你想要的任何光标图像。在图像上绘制对我来说不起作用 正常加载图像,然后:
Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(bufferedImage, new Point(0,0), "transparent");
Graphics graphics = bufferedImage.getGraphics();
graphics.drawImage(image, 0,0, null);
frame.setCursor(cursor);
它仍然有工具包的双色限制:(谢谢,这可能是我要找到解决方案的最接近的地方了