⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw.java

📁 mpl.add(new MenuItem("DDA画线")) mpl.add(new MenuItem("中点画线")) mpl.add(new MenuItem("Bresenham
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
  if(dy>0)k=3;
  else k=4; 
 
 /*在屏幕上画*/
  if(isXOR) g.setXORMode(c);
		else 
		{
		    g.setPaintMode();
			g.setColor(c);
			
		}
  switch(k){
  	case 1:e=-dx;
  	x=xu0;y=yu0;
  		g.fillOval(xu0,yu0,1,1);
  	while(x<=xu1){
  	    x++;e=e+2*dy;
  		
  		if(e>=0){y++;e=e-2*dx;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x,y+1,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x,y+1,1,1);
		          g.fillOval(x,y-1,1,1);
		          break;
		    case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j+1,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j,1,1);}
        	             break;}
        	             }
		   
		      }break;
    case 2:e=-dx;
  	x=xu0;y=yu0;
  		g.fillOval(xu0,yu0,1,1);
  	while(x<=xu1){
  	    x++;e=e-2*dy;
  		
  		if(e>=0){y--;e=e-2*dx;}
  		
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x,y+1,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x,y+1,1,1);
		          g.fillOval(x,y-1,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j+1,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j,1,1);}
        	             break;}}
		      }break;
  	case 3:e=-dy;
  		x=xu0;y=yu0;
  	
  	while(y<=yu1){
  		g.fillOval(xu0,yu0,1,1);
  		y++;e=e+2*dx;
  		if(e>=0){x++;e=e-2*dy;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j+1,y,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j,y,1,1);}
        	             break;}}
		      }break;
     case 4:e=-dy;
  		x=xu0;y=yu0;
  	
  	while(y>=yu1){
  		g.fillOval(xu0,yu0,1,1);
  		y--;e=e+2*dx;
  		if(e>=0){x++;e=e+2*dy;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j+1,y,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j,y,1,1);}
        	             break;}
        	             }
		      }break; 
		      }
   //在缓冲区中画
  mark=0x8000;n=0;
  x=xu0;y=yu0;
  g=buffer.getGraphics();
  if(isXOR) g.setXORMode(c);
		else 
		{
		    g.setPaintMode();
			g.setColor(c);
			
		}
   switch(k){
  	case 1:e=-dx;
  	x=xu0;y=yu0;
  		g.fillOval(xu0,yu0,1,1);
  	while(x<xu1){
  	    x++;e=e+2*dy;
  		
  		if(e>=0){y++;e=e-2*dx;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j+1,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j,1,1);}
        	             break;}
        	             }
		      }break;
    case 2:e=-dx;
  	x=xu0;y=yu0;
  		g.fillOval(xu0,yu0,1,1);
  	while(x<xu1){
  	    x++;e=e-2*dy;
  		
  		if(e>=0){y--;e=e-2*dx;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j+1,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x,y+j,1,1);
        	     	        g.fillOval(x,y-j,1,1);}
        	             break;}
        	              }
		      }break;
  	case 3:e=-dy;
  		x=xu0;y=yu0;
  	
  	while(y<yu1){
  		g.fillOval(xu0,yu0,1,1);
  		y++;e=e+2*dx;
  		if(e>=0){x++;e=e-2*dy;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j+1,y,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j,y,1,1);}
        	             break;}
        	             }
		      }break;
     case 4:e=-dy;
  		x=xu0;y=yu0;
  	
  	while(y<yu1){
  		g.fillOval(xu0,yu0,1,1);
  		y--;e=e+2*dx;
  		if(e>=0){x++;e=e+2*dy;}
  		n++;
  		if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point)
           {
		   case 1:g.fillOval(x,y,1,1);
		          break;
		   case 2:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          break;
		   case 3:g.fillOval(x,y,1,1);
		          g.fillOval(x+1,y,1,1);
		          g.fillOval(x-1,y,1,1);
		          break;
		   case 4: {if(point%2==0){
        	     	   for(j=0;j<=j/2;j++)
        	     	       g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j+1,y,1,1);}
        	     	 else {for(j=0;j<=j/2;j++)
        	     	        g.fillOval(x+j,y,1,1);
        	     	        g.fillOval(x-j,y,1,1);}
        	             break;}
        	             }
		      }break; 
		      }
}
	
}//直线类结束

//定义圆类
class DrawCircle 
{ 
  public void midCircle1(Graphics g,Image buffer,Color c,int linestyle,int point,int x0,int y0,int r){
  	int x,mark=0x8000,n=0; 
  	int y;
  	g.setPaintMode();
	   g.setColor(c);
	    x=0; y=r; 
	   //在屏幕画圆 
      g.fillOval(x0,y0,3,3); //画圆心 
     //显示圆弧上的八个对称点
     g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(-y+x0,x+y0,1,1);              
     while(x<=y){
     y=(int)(Math.sqrt(r*r-x*x)+0.5);
     x++;
     n++;
     if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point){
           	case 1:g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(-y+x0,x+y0,1,1);
     break;
     case 2:g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,y+y0+1,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(x+x0,-y+y0+1,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,y+y0+1,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,-y+y0+1,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
    g.fillOval(-y+x0,-x+y0+1,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0+1,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(y+x0,x+y0+1,1,1);
     g.fillOval(-y+x0,x+y0,1,1);
      g.fillOval(-y+x0,x+y0+1,1,1);
      break;
      case 3:g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,y+y0+1,1,1);
     g.fillOval(x+x0,y+y0-1,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(x+x0,-y+y0+1,1,1);
     g.fillOval(x+x0,-y+y0-1,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,y+y0+1,1,1);
     g.fillOval(-x+x0,y+y0-1,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,-y+y0+1,1,1);
     g.fillOval(-x+x0,-y+y0-1,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
    g.fillOval(-y+x0,-x+y0+1,1,1);
    g.fillOval(-y+x0,-x+y0-1,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0+1,1,1);
     g.fillOval(y+x0,-x+y0-1,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(y+x0,x+y0+1,1,1);
     g.fillOval(y+x0,x+y0-1,1,1);
     g.fillOval(-y+x0,x+y0,1,1);
     g.fillOval(-y+x0,x+y0+1,1,1);
     g.fillOval(-y+x0,x+y0-1,1,1);
      break;}
     //显示圆弧上的八个对称点
     
     g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(-y+x0,x+y0,1,1);     
	 }//while
	 //在缓冲区画圆
	 g=buffer.getGraphics();
	 g.setPaintMode();
	   g.setColor(c);
       x=0; y=r; 
       g.fillOval(x0,y0,3,3); //画圆心 
     //显示圆弧上的八个对称点
     g.fillOval(x+x0+1,y+y0,1,1);
     g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-y+y0,-x+x0,1,1);
     g.fillOval(y+y0,-x+x0,1,1);
     g.fillOval(y+y0,x+x0,1,1);
     g.fillOval(-y+y0,x+x0,1,1);
     while(x<=y){
     y=(int)(Math.sqrt(r*r-x*x)+0.5);
     x++;
     n++;
     if(n%16>1)  mark=0x8000>>(n%16-1);
          if(n%16==1) mark=0x8000;
          if(n%16==0) mark=0x0001;
          if((linestyle & mark)!=0)
           switch(point){
           	case 1:g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(-y+x0,x+y0,1,1);
     break;
     case 2:g.fillOval(x+x0,y+y0,1,1);
     g.fillOval(x+x0,y+y0+1,1,1);
     g.fillOval(x+x0,-y+y0,1,1);
     g.fillOval(x+x0,-y+y0+1,1,1);
     g.fillOval(-x+x0,y+y0,1,1);
     g.fillOval(-x+x0,y+y0+1,1,1);
     g.fillOval(-x+x0,-y+y0,1,1);
     g.fillOval(-x+x0,-y+y0+1,1,1);
     g.fillOval(-y+x0,-x+y0,1,1);
    g.fillOval(-y+x0,-x+y0+1,1,1);
     g.fillOval(y+x0,-x+y0,1,1);
     g.fillOval(y+x0,-x+y0+1,1,1);
     g.fillOval(y+x0,x+y0,1,1);
     g.fillOval(y+x0,x+y0+1,1,1);
     g.fillOval(-y+x0,x+y0,1,1);
      g.fillOval(-y+x0,x+y0+1,1,1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -