透明色的问题

hngyq 2003-05-14 11:30:01
我想做一个五子棋小游戏,棋子存的是一个20x20的gif图像,有一个问题:当我把棋子画到棋盘上时,棋子显示的是一个小方块,包括圆形的棋子周围的白色背景, 请问我怎么样才能把这些白色背景去掉,让画出来的棋子显示的是圆形的?
...全文
42 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
希偌 2003-05-14
  • 打赏
  • 举报
回复
以applet为例,如下:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.image.*;

public class applet6 extends Applet {
MediaTracker mt;
Image img=null;
ImageFilter imgf=null;
FilteredImageSource fis=null;
public void init() {
img=this.getImage(this.getCodeBase(),"d.jpg");//这里装入你的图片
mt=new MediaTracker(this);
mt.addImage(img,0);
try {
mt.waitForAll(0);
} catch(Exception ex) {System.err.println(ex.toString());}
imgf=new myImage(img.getWidth(this),img.getHeight(this));
fis=new FilteredImageSource(img.getSource(),imgf);
img=this.createImage(fis);
}

public void paint(Graphics g) {
g.drawImage(img,0,0,this);//画出图片
}
}

class myImage extends RGBImageFilter {
int width=0;
int height=0;
public myImage(int width,int height) {
this.canFilterIndexColorModel=true;
this.width=width;
this.height=height;
}

public int filterRGB(int x,int y,int rgb) {
DirectColorModel dcm=(DirectColorModel)ColorModel.getRGBdefault();
int red=dcm.getRed(rgb);
int green=dcm.getGreen(rgb);
int blue=dcm.getBlue(rgb);
int alpha=dcm.getAlpha(rgb);
if(red==255&&green==255&&blue==255)//如果像素为白色,则让它透明,可以自己根据情况处理,如:让red==255就是红色的像素透明
alpha=0;
return alpha<<24|red<<16|green<<8|blue;
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧