2012-09-24 152 views
0

我创建使用光标:改变光标尺寸

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

上面的代码会创建一个红色的图像“im”的宽度,w和高度h,我想用它作为我的光标。

怎么办?

回答

0

它似乎像Windows只接受32X32大小的游标。所以这是我解决了这个问题:

的主要思想是使32X32尺寸图像透明中的每个像素,并应用颜色只有ü要在光标看到那些像素。在这种情况下,我想要一个长方形的红色矩形光标,在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")); 
}