5 07, 2007

JavaͼÏñ¼¼Êõ(ת)

±ÊÕßÔÚÕâÀォ»­Ïß,»­»òÌî³ä¶à±ßÐεÈÀí½âΪ"ͼÐÎ"¼¼Êõ,½«Í¼Æ¬µÄ±ä»»,ÏÔʾÀí½âΪ"ͼÏñ"¼¼Êõ.

Ïà¶Ô¶øÑÔ,ͼÐμ¼Êõ½Ï¼òµ¥,ͼÏñ¼¼Êõ½Ï¸´ÔÓ.ÏÂÃæ±ÊÕß´ÓʵÓõĽǶȳö·¢,½²½â¼¸¸öͼÏñ±à³ÌÎÊÌâ.Ê×ÏÈ,ÎÒÃÇ¿´ÏÂÃæÕâ¸ö³ÌÐò.

import java.applet.*;

import java.awt.*;

public class easy extends Applet

{

int i=1;

Image img;

public void init()

{

img=getImage(getCodeBase(),"mama.gif");

}

public void paint(Graphics g)

{

g.drawImage(img,0,0,this);

showStatus(String.valueOf(i++));

}

}

HTML ÎļþÈçÏÂ:

<APPLET CODE="easy.class"WIDTH=300 HEIGHT=300></APPLET>

³ÌÐò·Ç³£¼òµ¥. µ«Äã×¢Ò⵽ûÓÐ,ÔÚä¯ÀÀÆ÷µÄ״̬À¸,ÏÔʾ³öµÄÊýÖµ²¢²»Ò»¶¨ÊÇ1: ÄãÒªÏÔʾµÄͼƬ·ùÃæÔ½´ó,Õâ¸öÊýÖµÔ½´ó.Õâ˵Ã÷ paint() ·½·¨±»µ÷ÓÃÁ˲»Ö¹Ò»´Î.ÄÇô£¬ÊÇË­,ÔÚʲôʱºòµ÷ÓõÄ?

ÊÂʵÉÏ,ÿµ±ÓÐеÄͼƬÊý¾Ýµ½´ï»òÉú³Éʱ,JavaС³ÌÐò¶¼»á×Ô¶¯È¥µ÷ÓÃpaint()·½·¨ÖØ»æÆÁÄ».Õâ¸ö¹¤×÷ÓÉImageObserver½Ó¿ÚµÄimageUpdate()·½·¨ÊµÏÖ.Äã¿ÉÒÔ³¬Ô½Õâ¸öimageUpdate()·½·¨,×Ô¼ºÖØÐ±à³Ì.¿¼Âǵ½±¾µØµÄ»úÆ÷´ÓWeb·þÎñÆ÷ÉÏ»ñȡͼƬµÄËÙ¶ÈÒ»°ã±È½ÏÂý,ºÜ¶àʱºòÄã±ØÐëÒªÖªµÀÒѾ­ÓжàÉÙͼƬÊý¾ÝÒѾ­±»ÏÂÔØ.ÏÂÃæ¸ø³öÒ»¸öʾ·¶³ÌÐò,³ÌÐò¿ÉÒÔÒ»±ßÏÂÔØ,Ò»±ßÏÔʾ,ͬʱ֪ͨÓû§ÒѾ­»ñµÃ¶àÉÙͼƬÊý¾Ý.

import java.awt.*;

import java.applet.*;

import java.awt.image.*;

public class image_download extends Applet

{

Image img;

int step=0;//step ÓÃÀ´±íÊöÒѱ»ÏÂÔØµÄÄDz¿·ÖͼƬµÄ¸ß¶È

int percent=0;//percent ÓÃÀ´±íÊöÒÑÏÂÔØµÄͼƬµÄ¸ß¶ÈռͼƬ×ܸ߶ȵİٷֱÈ

public void init()

{

img=getImage(getCodeBase(),"mama.gif");

}

public void paint(Graphics g)

{

g.drawImage(img,0,0,this);

}

¡¡

//ÏÂÃæÎÒÃdz¬Ô½±¾À´µÄimageUpdate()·½·¨.ÿµ±ÓÐеÄͼƬÊý¾Ýµ½´ï(»ò²úÉú)ʱ´Ë·½·¨»á±»×Ô¶¯µ÷ÓÃ

public boolean imageUpdate(Image img_ob,int flags,int x,int y,int width,int height)

{

if(((flags & SOMEBITS)!=0) & (img_ob==img))//ÅжÏÊÇ·ñÓÖÓÐеÄͼÏñÊý¾Ý¶¼±»ÏÂÔØ

{

step=step+height;//¼ÆËãÒѱ»ÏÂÔØµÄͼƬµÄ¸ß¶È

percent=step*100/img.getHeight(this);//¼ÆËãÕâ¸ö¸ß¶ÈռͼƬ¸ß¶ÈµÄµÄ°Ù·Ö±È

showStatus(percent+"%");//ÔÚ״̬À¸ÏÔʾ

repaint(x,y,width,height);//ÖØ»æÆÁÄ».µ«Ö»»­ÐÂÊý¾Ý±í´ïµÄ²¿·Ö.¼òµ¥Ê¹ÓÃrepaint()ÖØ»æ

//Õû¸öÆÁÄ»»áʹ»­ÃæÉÁ˸

}

if((flags & ERROR)!=0)//¼ÙÈçÏÂÔØ³ö´í

showStatus("image loading error");

if((flags & ALLBITS)!=0)//¼ÙÈçÈ«²¿Í¼Æ¬Êý¾Ý¶¼ÒÑÏÂÔØÍê

showStatus("Done");

return true;

}

}

HTMLÎļþÈçÏÂ:

<APPLET CODE="image_download.class"WIDTH=300 HEIGHT=300></APPLET>

imageUpdate()²ÎÊý˵Ã÷ÈçÏÂ:

img_ob: ±»¼àÊÓµÄͼÏñ.

flags: ±»¼àÊÓͼÏñµÄ״̬.

ABORT: ͼÏñÉú³É±»Òì³£ÖжÏ

ALLBITS: È«²¿Í¼Ïñ¶¼ÒÑÉú³É

ERROR: ·¢Éú´íÎó

FRAMEBITS: Íê³ÉÒ»·ù

HEIGHT: ±¾´ÎÉú³ÉµÄ¸ß¶È

SOMEBITS: Òѽ«Éú³ÉÁËÒ»²¿·ÖͼÏñ

WIDTH: ±¾´ÎÉú³ÉµÄ¿í¶È

x: xÖá×ø±ê

y: yÖá×ø±ê

width: ±¾´ÎÏÂÔØµÄͼÏñµÄ¿í¶È

height: ±¾´ÎÏÂÔØµÄͼÏñµÄ¸ß¶È

¡¡

ÏÂÃæÓÃÁ½¸öÀý×Ó˵Ã÷ÔõÑù»ñÈ¡´ó·ùͼÏñµÄ¾Ö²¿.µÚÒ»¸öÀý×ÓʹÓÃCropImageFilterÀàÈ¥»ñµÃͼÏñµÄ¾Ö²¿.Äã¿ÉÒÔÕâÑùʹÓÃÕâÖÖ¼¼Êõ:

Ê×Ïȸù¾ÝͼÏñ²Ã¼ô¹ýÂËÆ÷²úÉúͼÏñ¹ýÂËÆ÷.

ImageFilter filter=new CropImageFilter (int x, int y, int width, int height).

x: ²Ã¼ôÆðʼµã X Öá×ø±ê

y: ²Ã¼ôÆðʼµãY Öá×ø±ê

width: ²Ã¼ô¿í¶È

height: ²Ã¼ô¸ß¶È

È»ºó¸ù¾Ý¸ù¾Ý¹ýÂËÆ÷²úÉúͼÏñÉú²úÕß. ImageProducer procuder=new FilteredImageSource(baseImage.getSource(),filter).

baseImage: ½«Òª±»²Ã¼ôµÄͼƬ

È»ºó¸ù¾ÝͼÏñÉú²úÕß²úÉúеÄͼÏñ. Image img=createImage(procuder).

ÏÂÃæµÄ³ÌÐòʹÓÃÉÏÊö¼¼Êõ²Ã¼ôͼƬ.³ÌÐòÔËÐкó,ÄãÓÃ"ÍÏ×§"Êó±êµÄ·½Ê½(°´×¡Êó±ê¼ü²¢Òƶ¯Êó±ê)ÔÚͼƬÉÏÑ¡¶¨Ò»Æ¬ÇøÓò,È»ºóÔÙÔÚÔËÐÐÇøÉϵã»÷Êó±ê,¸Õ²ÅÄãÑ¡¶¨µÄÇøÓòµÄͼƬ½«±»¸´ÖƵ½Õâ¸öλÖÃ.ҪעÒâµÄÊÇ,³ÌÐò²¢Î´¶ÔÑ¡ÔñÇøÓòµÄÆðʼµãºÍÖÕÖ¹µãµÄÏà¶ÔλÖÃ×÷³öÅжÏ,Òò´Ë,ÄãÒ»¶¨ÒªÊ¹ÖÕÖ¹µãÔÚÆðʼµãµÄÓÒÏ·½.

import java.awt.*;

import java.applet.*;

import java.awt.image.*;

public class CropFilterImage extends Applet

{

Image baseImage,cropImage;//baseImageÊÇԭʼͼƬ,cropImageÊǸù¾ÝÑ¡¶¨ÇøÓò²úÉúµÄÐÂͼƬ

int sx,sy;//Ñ¡¶¨ÇøÓòÆðʼµã×ø±ê

int dx=0,dy=0;//ÒªÏÔʾÐÂͼƬµÄλÖÃ

int width,height;//Ñ¡¶¨ÇøÓòµÄ¿íºÍ¸ß

boolean selected=false;//ÓÃÀ´Åж¨ÏÖÔÚÓû§ÔÚ¸Éʲô

public void init()

{

baseImage=getImage(getCodeBase(),"mama.gif");

cropImage=baseImage;

}

public void paint(Graphics g)

{

g.drawImage(baseImage,0,0,this);

g.drawImage(cropImage,dx,dy,this);

}

public boolean mouseDown(Event evt,int x,int y)

{

if(!selected)//¼ÙÈçÓû§¿ªÊ¼Ñ¡Ôñ

{

sx=x;//¼ÇÏÂÆðʼµã

sy=y;

selected=true;

return true;

}

else//¼ÙÈçÓû§ÒѾ­É趨ÁËÑ¡ÔñÇø

{

dx=x;

dy=y;

cropImage=cropImage();//²Ã¼ôͼÏñ

repaint();//ÖØ»­ÆÁÄ»

selected=false;

}

return true;

}

public boolean mouseUp(Event evt,int x,int y)

{

if(selected)//Óû§ËÉ¿ªÊó±ê½¡±íʾÒÑÈ·¶¨Ñ¡ÔñÇø

{

width=Math.abs(x-sx);

height=Math.abs(y-sy);

getGraphics().drawRect(sx,sy,width,height);

}

return true;

}

public boolean mouseDrag(Event evt,int x,int y)

{

showStatus("from("+sx+","+sy+") to ("+x+","+y+")");

return true;

}

Image cropImage()

{

ImageFilter filter=new CropImageFilter(sx,sy,width,height);//¸ù¾ÝͼÏñ²Ã¼ô¹ýÂËÆ÷²úÉú¹ýÂËÆ÷

//ÏÂÃæ¸ù¾Ý¹ýÂËÆ÷²úÉúͼÏñÉú²úÕß

ImageProducer producer=new FilteredImageSource(baseImage.getSource(),filter);

Image img=createImage(producer);//¸ù¾ÝͼÏñÉú²úÕß²úÉúÐÂͼÏñ

return img;

}

}

HTMLÎļþÈçÏÂ:

<APPLET CODE="CropFilterImage.class"WIDTH=600 HEIGHT=300></APPLET>

¡¡

ºÜ¶àÇé¿öÏÂÉÏÃæµÄ·½·¨²»ÊµÓÃ.±ÈÈçÄãÏë¶ÔͼƬ×÷³öijÖֱ任,ÉÏÃæµÄ·½·¨¾ÍÎÞÄÜΪÁ¦ÁË.ÏÂÃæµÄ³ÌÐò¸ø³ö¸üÇ¿´óµÄËã·¨:½«Í¼ÏñÊý¾ÝÈ¡µ½Êý×éÖÐ,ÔÙÔÚÊý×éÖн«ÐèÒªµÄÊý¾ÝÌáÈ¡³öÀ´,ÒÀ¾ÝÕâЩÊý¾ÝÔÙÉú³ÉеÄͼÏñÈ¥ÏÔʾ.ÉèÏëÄãÓÐÒ»¸ö·ùÃæ´óÓÚ´°¿Ú³ß´çµÄͼÏñÒªÏÔʾ,Äã±ØÐëÒªÈÃÓû§¿ÉÒÔ¿ØÖÆ´°¿ÚµÄλÖÃ,ͨ¹ýÒÆ¶¯´°¿Ú,ä¯ÀÀ

Õû¸öͼÏñ.³ÌÐòÔËÐкó,Äã¿ÉÒÔÓÃËĸö¹â±ê¼üÒÆ¶¯´°¿Úä¯ÀÀÈ«²¿Í¼Ïñ.

³ÌÐòÖеĹؼü¼¼ÊõÓÐÈý¸ö,µÚÒ»¸öÊÇPixelGrabberÀàÓÃÓÚ»ñȡͼÏñÊý¾Ý.Äã¿ÉÒÔÕâÑùʹÓÃ:

Ê×ÏÈÉú³ÉÒ»¸öPixelGrabberʵÀý:

PixelGrabber pg=new PixelGrabber(Image img,int x,int y,int width,int height,int pix[ ],int offset,int scansize)

img: ±»È¡Êý¾ÝµÄͼÏñ

x: Æðʼµã x Öá×ø±ê

y: Æðʼµã y Öá×ø±ê

width: ͼÏñ¿í¶È

height: ͼÏñ¸ß¶È

pix[ ]: Ä¿±êÊý×é

offset: Ä¿±êÊý×éµÄÆðʼµØÖ·

scansize: ͼÏñÿÐеãÊý

È»ºóʹÓÃgrabPixels( ) ·½·¨È¡Êý¾Ý:

try { pg.grabPixels( ) ; }

catch ( InterruptedException e) { }

µÚ¶þ¸ö¹Ø¼ü¼¼ÊõÊÇʹÓÃýÌå×·×ÙÆ÷MediaTracker¼àÊÓͼÏñµÄÉú³ÉÇé¿ö.Äã¿ÉÒÔÕâÑùʹÓÃ:

Ê×ÏÈÉú³ÉÒ»¸öýÌå×·×ÙÆ÷µÄʵÀý:

MediaTracker mt=new MediaTracker(this);

¡¡

È»ºóÏòÆäÖмÓÈëҪ׷×ÙµÄͼÏñ:

mt.addImage(Image image,int ID)

imageÊÇÄãҪ׷×ÙµÄͼÏñ, IDÊÇÄãÉ趨µÄÒ»¸ö±íʾÕâ¸öͼÏñµÄÐòºÅ.

È»ºóʹÓÃwaitForID ( int ID ) »ò waitForAll( ) µÈ´ýͼÏñÈ«²¿Éú³É

try { mt.waitForID(1);}

catch(InterruptedException e){ }

µÚÈý¸ö¹Ø¼ü¼¼ÊõÊÇʹÓÃÄÚ´æÊý¾Ý(Êý×é)²úÉúͼÏñ.Äã¿ÉÒÔÕâÑùʹÓÃ:

createImage(new MemoryImageSource(int width, int height, int pix[ ], int offset, int scanwidth)

width: ÓûÉú³ÉµÄͼÏñµÄ¿í¶È

heidth: ÓûÉú³ÉµÄͼÏñµÄ¸ß¶È

pix[ ]: Êý¾ÝÔ´

offset: ´ÔÊý×éµÄÄÄÀ↑ʼʹÓÃÊý¾Ý

scanwidth: ͼÏñÿÐеÄÏóËØÊý

³ÌÐòÈçÏÂ:

import java.applet.*;

import java.awt.*;

import java.awt.image.*;

public class picture_window extends Applet

{

Image img_full,img_window;//img_fullÊÇԭͼÏñ, img_windowÊÇ´ÓԭͼÏñÖвüôµÄÒªÔÚ´°¿ÚÖÐÏÔʾµÄͼÏñ

int img_width,img_height;//ԭʼͼÏñµÄ¿íºÍ¸ß

int window_width=150,window_height=150;//´°¿ÚµÄ¿íºÍ¸ß

int window_x=30,window_y=30;//´°¿ÚµÄ×óÉϽÇ×ø±ê

int point_img_full,point_img_window;//ԭʼͼÏñÊý¾ÝÊý×éµÄ²Ù×÷µØÖ·ºÍ´°¿ÚͼÏñÊý¾ÝÊý×éµÄ²Ù×÷µØÖ·

int img_full_data[];//ԭʼͼÏñÊý¾ÝÊý×é.ûÓгõʼ»¯ÊÇÒòΪÏÖÔÚ²»ÖªµÀԭʼͼÏñµÄ´óС

int img_window_data[]=new int[window_width * window_height];//´°¿ÚͼÏñÊý¾ÝÊý×é

MediaTracker mt=new MediaTracker(this);//ýÌå×·×ÙÆ÷

PixelGrabber img_full_grabber;//ÓÃÀ´»ñȡԭʼͼÏñµÄÊý¾Ý

public void init()

{

img_window=createImage(window_width,window_height);//´´½¨´°¿ÚͼÏñ

img_full=getImage(getCodeBase(),"mama.gif");

//ÏÂÃæÒªµÈ´ýÖ±µ½È«²¿µÄԭʼͼÏñÊý¾Ý¶¼±»ÕýÈ·ÔØÈë.·ñÔòÎÞ·¨ÖªµÀԭʼͼÏñµÄ´óС

mt.addImage(img_full,1);//ÏòýÌå×·×ÙÆäÖмÓÈëҪ׷×ÙµÄͼÏñ

try{mt.waitForID(1);} // µÈ´ýÈ«²¿Êý¾Ý±»ÕýÈ·ÔØÈë

catch(InterruptedException e){ }

img_width=img_full.getWidth(this);//ÏÖÔÚ¿ÉÒÔ»ñȡԭʼͼÏñµÄÕýÈ·ÐÅÏ¢ÁË.È¡ËüµÄ¿íºÍ¸ß

img_height=img_full.getHeight(this);

img_full_data=new int[img_width * img_height];//³õʼ»¯Ô­Ê¼Í¼ÏñÊý¾ÝÊý×é

img_full_grabber=new PixelGrabber(img_full,0,0,img_width,img_height,img_full_data,0,img_width);//×¼±¸»ñȡͼÏñÊý¾Ý

try{img_full_grabber.grabPixels();}//²É¼¯Êý¾Ý

catch(InterruptedException e){ }

get_img_window_data();//Éú³É´°¿ÚͼÏñ

}

public void paint(Graphics g)

{

g.drawImage(img_window,0,0,this);

}

public void get_img_window_data()

{

point_img_full=window_y * img_width+window_x;//´ÓÕâ¸öλÖÿªÊ¼»ñȡԭʼͼÏñÊý¾Ý

point_img_window=0;//´ÓÕâ¸öλÖÿªÊ¼Ïò´°¿ÚͼÏñÊý¾ÝÊý×é·ÅÊý¾Ý

for(int i=0;i<window_height;i++)//ÖðÐд¦Àí

{

for(int j=0;j<window_width;j++)//ÖðÁд¦Àí

img_window_data[point_img_window++]=img_full_data[point_img_full++];//È¡ºÍ´æ

¡¡

point_img_full=point_img_full+img_width-window_width;//¿ªÊ¼´¦ÀíÏÂÒ»ÐÐ

}

img_window=createImage(new MemoryImageSource(window_width,window_height,img_window_data,0,window_width));//¸ù¾ÝÄÚ´æÊý¾Ý(Êý×é)Éú³ÉͼÏñ

//µÈ´ýͼÏñÍêÈ«Éú³É.·ñÔòÒ»±ßÉú³ÉÒ»±ß»æÖÆ´°¿ÚͼÏñ»áÉÁ˸.

mt.addImage(img_window,1);

try{mt.waitForID(1);}

catch(InterruptedException e){}

}

//ÏÂÃæµÄ¼üÅÌʼþ·½·¨¸ù¾ÝÓû§µÄ°´¼üÖØÖô°¿Ú×ø±ê,ÔÙÉú³ÉͼÏñ,ÔÙÏÔʾ

public boolean keyDown(Event e,int key)

{

switch(key)

{

case(Event.UP):

if(window_y>0)

window_y-=1;

break;

case(Event.DOWN):

if(window_y<(img_height-window_height))

window_y+=1;

break;

case(Event.RIGHT):

if(window_x<(img_width-window_width))

window_x+=1;

break;

case(Event.LEFT):

if(window_x>0)

window_x-=1;

break;

default:

break;

}

showStatus(String.valueOf(window_x)+" , "+String.valueOf(window_y));

get_img_window_data();

getGraphics().drawImage(img_window,0,0,this);

return true;

}

}

HTMLÎļþÈçÏÂ:

<APPLET CODE="picture_window.class"WIDTH=150 HEIGHT=150></APPLET>

¡¡

ÏÂÃæµÄ³ÌÐò¶ÔÁ½¸öͼÏñ½øÐкϳɲ¢ÏÔʾÀ´Ä£ÄâͼÏñµÄµ­Èëµ­³ö.³ÌÐòÔËÐкó,ÿ°´Ò»´ÎÏòÉϼü,ǰ¾°Í¼Ïñ¾ÍÔöǿһµã,ÿ°´Ò»´ÎÏòϼü,ǰ¾°Í¼Ïñ¾Í¼õÈõÒ»µã.

Ê×ÏÈÄãÒªÁ˽âͼÏñÊý¾Ý.

ÿ¸öÏóËØµãµÄÐÅÏ¢ÓÉÒ»¸öÕûÊý±í´ï.ÕûÊý¹²32¸ö¶þ½øÖÆÎ»,´Ó×óÏòÓÒ,·Ö³ÉËĸö²¿·Ö,ÿ²¿·Ö¶¼ÊÇ8λ.

µÚÒ»²¿·Ö: Alpha ÐÅÏ¢.¿ØÖÆÍ¼ÏñÏÔʾµÄÇ¿¶È.ÏÂÃæµÄ³ÌÐò¾ÍÊÇͨ¹ýµ÷ÕûÕâ¸öÊýÖµ¿ØÖÆÍ¼ÏñµÄµ­Èëµ­³ö.

µÚ¶þ²¿·Ö:ºìÉ«Êý¾Ý.

µÚÈý²¿·Ö:ÂÌÉ«Êý¾Ý.

µÚËIJ¿·Ö:À¶É«Êý¾Ý.

³ÌÐòʹÓõķ½·¨ÊÇ:ÏÈ»­±³¾°Í¼Ïñ,ÔÙÔÚÉÏÃæ»­´øAlphaÊý¾ÝµÄǰ¾°Í¼Ïñ,ͨ¹ýµ÷ÕûAlphaֵʹǰ¾°Í¼Ïñµ­Èë µ­³ö.

import java.applet.*;

import java.awt.*;

import java.awt.image.*;

public class alpha extends Applet

{

Image background, foreground;//±³¾°Í¼ÏñºÍǰ¾°Í¼Ïñ

Image foreground_new;//ÒÀ¾Ýǰ¾°Í¼ÏñÉú³ÉµÄ´øAlphaͨµÀµÄÐÂͼÏñ

MediaTracker mt;

int foreground_alpha=175;//ǰ¾°Í¼ÏñµÄÆðʼAlphaÖµ

int foreground_data[];//ÓÃÀ´Éú³ÉÐÂͼÏñµÄÄÚ´æÊý¾Ý

PixelGrabber pg;

int transparancy;//ǰ¾°Í¼ÏñµÄȫ͸Ã÷µãµÄÏñËØÖµ.ֻҪǰ¾°Í¼ÏñµÄij¸öµãÊÇÕâ¸öÖµ,Ëü¾Íȫ͸Ã÷

public void init()

{

background=getImage(getCodeBase(),"mama.gif");

foreground=getImage(getCodeBase(),"baba.gif");

mt=new MediaTracker(this);

mt.addImage(background,1);

mt.addImage(foreground,2);

try{mt.waitForAll();} // µÈ´ýËùÓÐͼƬµÄÊý¾Ý¶¼±»ÕýÈ·ÔØÈë

catch(InterruptedException e){ }

foreground_data=new int[foreground.getWidth(this) * foreground.getHeight(this)];//³õʼ»¯

//ÏÂÃæ°Ñǰ¾°Í¼Æ¬µÄÊý¾ÝÔØÈëÊý×é

pg=new PixelGrabber(foreground,0,0,foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this));

try{pg.grabPixels();}

catch(InterruptedException e){ }

for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)

foreground_data[i]=foreground_data[i]&0x00ffffff;//°ÑËùÓеÄÏóËØµÄAlphaÖµÖÃΪ0

//ÏÂÃæÎÒ°ÑͼÏñ×óÉϽǵĵãµÄÖµ×÷Ϊ͸Ã÷Öµ.¼ÙÈçͼÏñÖÐÄĸöµãµÄÖµºÍ×óÉϽǵĵãµÄÖµÒ»Ñù,

//Õâ¸öµã¾Íȫ͸Ã÷--±³¾°100%³öÏÖ.ÎÒÓÃÕâ¸ö±È½Ï¼òµ¥µÄ°ì·¨°Ñǰ¾°Í¼ÏñÖÐÎÒ²»ÏëÒªµÄ²¿·ÖÈ¥µô

transparancy=foreground_data[0];

}

public void paint(Graphics g)

{

g.drawImage(background,0,0,this);

}

public boolean keyDown(Event e, int key)

{

if (key==Event.UP && foreground_alpha<255)//ÒÀ¾Ý°´¼ü¸Ä±äAlphaÖµ

foreground_alpha++;

if (key==Event.DOWN && foreground_alpha>0)

foreground_alpha--;

showStatus(String.valueOf(foreground_alpha));//ÔÚ״̬À¸ÏÔʾAlphaÖµ

for (int i=0;i<(foreground.getWidth(this) * foreground.getHeight(this));i++)//Öðµã´¦Àí

{

foreground_data[i]=foreground_data[i] & 0x00ffffff;//Öô˵ãΪȫ͸Ã÷

if (foreground_data[i]!=transparancy)//¼ÙÈçÕâ¸öµãµÄÖµºÍȫ͸Ã÷µã²»Í¬

foreground_data[i]=foreground_data[i] | (foreground_alpha<<24);//¸øËüAlphaÖµ

}

foreground_new=createImage(new MemoryImageSource(foreground.getWidth(this),foreground.getHeight(this),foreground_data,0,foreground.getWidth(this)));//Éú³Éǰ¾°Í¼Ïó

mt.addImage(foreground_new,3);

try{mt.waitForID(3);}

catch(InterruptedException e2){ }

getGraphics().drawImage(background,0,0,this);//ÏÈ»­±³¾°

getGraphics().drawImage(foreground_new,100,100,this);//ÔÙ»­Ç°¾°

return true;

}

}

ÏÂÃæÊÇHTMLÎļþ:

<APPLET CODE="alpha.class"WIDTH=300 HEIGHT=300></APPLET>
¡¡
×îлظ´
·¢±íÆÀÂÛ













Bold Italic Link