我使用:
创建了一个游标 BufferedImage im=null;
try {
im = ImageIO.read(new File("images/cursor1.jpg"));
} catch (IOException ex) {
Logger.getLogger(SRGView.class.getName()).log(Level.SEVERE, null, ex);
}
Cursor cursor = getToolkit().createCustomCursor(im, new Point(1,1), "s");
this.setCursor(cursor);
cursor1.jpg是5X5(以像素为单位)。但是,当它显示在屏幕上时,它要大得多。我想制作尺寸为1X1,5X5,10X10的光标。我宁愿选择动态创建图像而不是读取图像文件。即。
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
im.setRGB(x, y, new Color(255, 0, 0).getRGB());
}
}
上面的代码会创建一个宽度为w,高度为h的红色图像,我希望将其用作我的光标。
怎么做?
答案 0 :(得分:0)
看起来Windows只接受32X32大小的游标。所以这就是我解决问题的方法:
主要思想是使32X32尺寸图像中的每个像素都透明,并仅将颜色应用于您希望在光标中看到的像素。在这种情况下,我想要一个w x h红色矩形光标,因此,在32X32图像的中心,我将w x h像素设置为红色并将该图像设置为光标。
public void setCursorSize(int w, int h) {
this.cw = w;
this.ch = h;
if (w > 32) {
w = 32;
}
if (h > 32) {
h = 32;
}
Color tc = new Color(0, 0, 0, 0);
BufferedImage im = new BufferedImage(32, 32, BufferedImage.TYPE_4BYTE_ABGR);//cursor size is 32X32
for (int x = 0; x < 32; x++) {
for (int y = 0; y < 32; y++) {
im.setRGB(x, y, tc.getRGB());
}
}
for (int x = 16 - w / 2; x <= 16 + w / 2; x++) {
for (int y = 16 - h / 2; y <= 16 + h / 2; y++) {
im.setRGB(x, y, new Color(255, 0, 0).getRGB());
}
}
this.setCursor(getToolkit().createCustomCursor(im, new Point(16, 16), "c1"));
}