当前页面: 开发资料首页 → Java 专题 → java图形图像——使用图像追踪 
java图形图像——使用图像追踪 
摘要: java图形图像——使用图像追踪  
java图形图像——使用图像追踪 
// 程序:使用图像追踪
// 范例文件:UseMediaTracker.java 
import java.net.*;
import java.awt.*;
import java.applet.*; 
public class UseMediaTracker extends Applet
{
   int          AppletWidth,AppletHeight,Ascent,Descent,StringWidth,X,Y;
   Image        Bg,Ship1,Ship2,Plane1,Plane2;
   MediaTracker MT; 
   public void init()
   {
     AppletWidth = getSize().width;   //取得Applet的显示宽度
     AppletHeight = getSize().height; //取得Applet的显示高度 
      //指定必须取得的图像
      Bg     = getImage(getDocumentBase(),"Images/1.gif");
      Ship1 = getImage(getDocumentBase(),"Images/3.gif");
      Ship2 = getImage(getDocumentBase(),"Images/4.gif");
      Plane1 = getImage(getDocumentBase(),"Images/5.gif");
      Plane2 = getImage(getDocumentBase(),"Images/6.gif"); 
      MT = new MediaTracker(this);     //建立MediaTracker类实体  
      //将必须取得的图像加入追踪清单中
      MT.addImage(Bg    ,0);
      MT.addImage(Ship1 ,0);
      MT.addImage(Ship2 ,0);
      MT.addImage(Plane1,0);
      MT.addImage(Plane2,0); 
      try
      {        
         showStatus("图像加载中..."); //在状态列显示信息
         MT.waitForAll();              //等待所有图像下载
      }
      catch(InterruptedException E){ }    
   } 
   public void paint(Graphics g)
   {
      //如果图像下载发生任何错误的话...
      if((MT.statusAll(false) & MediaTracker.ERRORED) != 0)
      {
         FontMetrics FM = g.getFontMetrics(); 
         Ascent      = FM.getAscent();
         Descent     = FM.getDescent();
         StringWidth = FM.stringWidth("加载图像发生错误..."); 
         X = (AppletWidth - StringWidth) / 2;
         Y = (AppletHeight - (Ascent + Descent)) / 2 + Ascent; 
         setBackground(Color.black);               //背景设为黑色
         g.setColor(Color.white);                  //字符串设为白色 
         g.drawString("加载图像发生错误...",X,Y); //置中显示字符串 
         return;                                   //结束函数执行
      }        
      //如果正确下载所有图像则将所有图像绘制在Applet中
      g.drawImage(Bg ,0,0,320,240,this);
      g.drawImage(Ship1 ,20,140,80,80,this);
      g.drawImage(Ship2 ,180,140,80,80,this);
      g.drawImage(Plane1,30,10,100,100,this);
      g.drawImage(Plane2,250,50,50,50,this);
   }
} 
这个实例主要就是使用MediaTracker类,这各类主要作用是可以得到图片的加载情况。主要代码如下:
MT = new MediaTracker(this);     //建立MediaTracker类实体  
      //将必须取得的图像加入追踪清单中
      MT.addImage(Bg    ,0);
      MT.addImage(Ship1 ,0);
      MT.addImage(Ship2 ,0);
      MT.addImage(Plane1,0);
      MT.addImage(Plane2,0); 
      try
      {        
         showStatus("图像加载中..."); //在状态列显示信息
         MT.waitForAll();              //等待所有图像下载
      }
      catch(InterruptedException E){ }    
   } 
   public void paint(Graphics g)
   {
      //如果图像下载发生任何错误的话...
      if((MT.statusAll(false) & MediaTracker.ERRORED) != 0)