0

我想为我正在制作的电脑游戏使用硬件光标,AWT 允许我这样做,并指定要使用的图像,但是它只接受 2 种颜色和透明度,这是相当有限的。

我相当肯定在大多数当前系统上可以使用更大的颜色深度,有没有办法在 AWT 中实现这一点?其他方式呢?

4

3 回答 3

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);

它仍然有 Toolkit 的 2 色限制 :(

于 2011-03-16T18:31:42.190 回答
0

如果您调用 Toolkit.getMaximumCursorColors 并且最多返回 2 - 那么这就是 AWT 将用来呈现光标的全部内容。为了解决这个问题,您可以制作一个完全透明的图像并将其设置为光标。然后,将 MouseListener 添加到您用于绘制游戏的任何组件中,并在当前鼠标坐标处绘制或绘制您想要的任何光标图像。

于 2009-07-07T02:47:13.567 回答
0

我对 AWT 的记忆有些参差不齐,但我认为它不一定能让您更改硬件光标。相反,它允许您定义自定义光标,由特定的工具包实现(java.awt.Toolkit 的子类型)决定如何更改光标。

同样,虽然 API 级别支持多色光标,但使用您的特定工具包可能不支持它们,您可能希望获取系统的工具包对象并调用 getMaximumCursorColors()。如果数字不够高,我不确定是否有办法通过 Java 绕过它。

于 2009-07-07T02:31:07.023 回答