网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  在gui控件上放置图片,并在图片上输出半透明文字     
  文章作者:未知  文章来源:水木森林  
  查看:98次  录入:管理员--2007-11-17  
 
  主要使用到的是java.awt.image.*包,继承rgbimagefilter类,对图片的像素进行alpha(透明度)进行修改,下面以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;
image im=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());}
im=this.createimage(100,100);//建立新的图片,用于输入文字,以便接下来进行透明处理
graphics g2=im.getgraphics();
g2.setfont(new font("宋体",font.bold,15));
g2.drawstring("半透明文字",10,50);
imgf=new myimage(100,100,100);//调用自定义类进行对象构造
fis=new filteredimagesource(im.getsource(),imgf);//对图象的源(图象生产者)进行过滤处理,构造出filteredimagesource对象实例
im=this.createimage(fis);//通过filteredimagesource实例生成image
}

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<<24|red<<16|green<<8|blue;//进行标准argb输出以实现图象过滤
}
}
 
 
上一篇: 在applet中实现事件向应    下一篇: 在jar包中动态载入第三方jar class问题
  相关文档
java exception 机制 11-17
轻松玩转java web start 11-17
使tostring() 的创建自动化 11-17
java加载类库的顺序 11-17
nhibernate 示例 11-17
使用java程序的泛型应该注意的几个地方 11-16
aop在大规模软件开发项目中应用的尝试与思考 11-16
论jsp数据库连接池的必要性 11-17
jini技术介绍 11-17
为网络做准备j2ee部署中的下一个冲击波(图) 11-17
java中中文问题详解 11-17
详谈基于json的高级ajax开发技术 11-17
剑桥大学java期末考试题一份 11-17
使用jms在集群应用程序中分配任务(图) 11-17
给 java se 注入脚本语言的活力 11-17
hibernate入门 - 包作用详解 11-17
利用java技术编写桌面软件基础 11-17
正确优雅的解决用户退出问题(转自http://www.jdon.com) 11-17
使用技巧:运用加密技术保护java源代码 11-16
用java快速开发linuxgui应用 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息