您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何在GUI控件上放置圖片并在圖片上輸出半透明文字,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
主要使用到的是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);//調(diào)用自定義類進行對象構(gòu)造
fis=new
FilteredImageSource(im.getSource(),imgf);//對圖象的源(圖象生產(chǎn)者)進行過濾處理,構(gòu)造出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的子類,繼承它實現(xiàn)圖象ARGB的處理
int width=0;
int
height=0;
int alpha=0;
public myImage(int width,int height,int alpha)
{//構(gòu)造器,用來接收需要過濾圖象的尺寸,以及透明度
this.canFilterIndexColorModel=true;
//TransparentImageFilter類繼承自RGBImageFilter,它的構(gòu)造函數(shù)要求傳入原始圖象的寬度和高度。該類實現(xiàn)了filterRGB抽象函數(shù),缺省的方式下,該函數(shù)將x,y所標(biāo)識的象素的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;//進行標(biāo)準(zhǔn)ARGB輸出以實現(xiàn)圖象過濾
}
} [@more@]
上述就是小編為大家分享的如何在GUI控件上放置圖片并在圖片上輸出半透明文字了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。