public void paint(Graphics g) { g.drawImage(img,0,0,this);//画出图片 g.drawImage(im,100,100,this);//添加半透明文字 } }
class myImage extends RGBImageFilter {//抽象类RGBImageFilter是ImageFilter的子类,继续它实现图象ARGB的处理 int width=0; int height=0; int alpha=0; public myImage(int width,int height,int alpha) {//构造器,用来接收需要过滤图象的尺寸,以及透明度 this.canFilterIndexColorModel=true; //TransparentImageFilter类继续自RGBImageFilter,它的构造函数要求传入原始图象的宽度和高度。该类实现了filterRGB抽象函数,缺省的方式下,该函数将x,y所标识的象素的ARGB值传入,程序员按照一定的程序逻辑处理后返回该象素新的ARGB值 this.width=width; this.height=height; this.alpha=alpha; }
public int filterRGB(int x,int y,int rgb) { DirectColorModel dcm=(DirectColorModel)ColorModel.getRGBdefault(); //DirectColorModel类用来将ARGB值独立分解出来 int red=dcm.getRed(rgb); int green=dcm.getGreen(rgb); int blue=dcm.getBlue(rgb); if(red==255&&green==255&&blue==255)//假如像素为白色,则让它透明 alpha=0; return alpha<<24red<<16green<<8blue;//进行标准ARGB输出以实现图象过滤 } }