我想在我正在制作的电脑游戏中使用硬件光标,AWT允许我这样做,并指定要使用的图像,但它只接受2种颜色和透明度,这是相当有限的。
我很确定在大多数现有系统上可以使用更大的颜色深度,有没有办法在AWT中实现这一点?其他方式呢?
答案 0 :(得分:2)
在图像上绘图对我不起作用。
图像正常加载,然后:
Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(bufferedImage, new Point(0,0), "transparent");
Graphics graphics = bufferedImage.getGraphics();
graphics.drawImage(image, 0,0, null);
frame.setCursor(cursor);
它仍然有工具包的双色限制:(
答案 1 :(得分:0)
我对AWT的记忆有点不稳定,但我不认为它一定会让你更改硬件光标。相反,它允许您定义自定义游标,并由特定工具包实现(java.awt.Toolkit的子类型)决定如何更改游标。
类似地,虽然API级别支持多色游标,但使用您的特定工具包可能不支持它们,您可能希望获取系统的工具包对象并调用getMaximumCursorColors()。如果数字不够高,我不确定是否有办法通过Java绕过它。
答案 2 :(得分:0)
如果你调用Toolkit.getMaximumCursorColors并返回最多2个 - 那就是AWT将用于渲染光标的所有内容。要解决这个问题,您可以制作完全透明的图像并将其设置为光标。然后,将MouseListener添加到您用于绘制游戏的任何组件,只需在当前鼠标坐标处绘制或绘制所需的任何光标图像。