我写的一点import java.awt.*;
import java.lang.*;
import java.awt.image.*;
import java.awt.Component;
import java.applet.*;
class point
{
public int x,y;
public point(int a,int b) 
{
x=a;
y=b;
}
}
class bj extends Component
{
public Image image;
public point[] p=new point[7];
public int dy,dx,x,ymax,ymin,w=300,h=300,y;
public int pixels[]=new int[w*h],pixels2[];
public int red=Color.red.getRGB();
public Image boundary()
{
//pixels=new int[w*h];
Image image;
for(int i=0;i<=7;i++)
{
if(i==7)
{
p[i+1]=p[0];
}
dy=p[i+1].y-p[i].y;
    dx=(p[i+1].x-p[i].x);
    if(dy>0)
     x=p[i].x;
            else
    x=p[i+1].x;
    ymax=(Math.max(p[i].y,p[i+1].y));
    ymin=(Math.min(p[i].y,p[i+1].y));
    for(y=ymin+1;y<=ymax;y++)
     {
     x=(int)(x+dx+0.5);
        if(pixels[y*w+x]==red)
         pixels[y*w+x+1]=red;
        else
         pixels[y*w+x]=red;
        }
     }
  ImageProducer ip=new MemoryImageSource(w,h,pixels,0,w);
  image=createImage(ip);
  return image;
 }
     public Image interior()
     {
      Image image;
      //pixels2=new int[w*h];
int maxx=300,minx=1,maxy=300,miny=1,l;
int in_flag;
for(y=miny-1;y<=maxy;y++)
{
in_flag=0;
for(x=minx-1;x<maxx;x++)
{
l=pixels[y*w+x];
if(l==red)
{
if(in_flag==0)
in_flag=1;
        else
        in_flag=0;
        }
     if(in_flag==1) 
     pixels[y*w+x]=red;                           
    }
}
ImageProducer ip=new MemoryImageSource(w,h,pixels,0,w);
image=createImage(ip);
return image;
}
public bj(point[] M)
{
p=M;
}
}
public class c2_2 extends Applet 
{
public void paint(Graphics g) 
{
point[] p1=new point[7];
p1[0]=new point(80,70);
p1[1]=new point(140,30);
p1[2]=new point(280,80);
p1[3]=new point(240,150);
p1[4]=new point(210,280);
p1[5]=new point(100,180);
p1[6]=new point(50,130);
bj b=new bj(p1);
//b.boundary();
//b.interior();
Image image1;
image1=b.boundary();
g.drawImage(image1,100,100,this);   
}
}
这玩意怎么画不出来啊!!
是扫描线算法的一种