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>
¡¡
×îлظ´
·¢±íÆÀÂÛ