//**************************************************************************************************** // 画直线子程序 void W_Line(int s_x,int s_y,int e_x,int e_y,int Mode) // 设计者: 牟联树 // 描 述: 以s_x,s_y为起点,e_x,e_y为终点画一直线. // Mode=0:画直线,Mode=1:画虚线 // 日 期: 2003.11.22 // 版本号: 1.0 //**************************************************************************************************** void W_line(int s_x,int s_y,int e_x,int e_y,int Mode) { int Err=0,D_x,D_y; if(e_y<s_y) { D_x = e_x; e_x = s_x;s_x = D_x; D_x = e_y; e_y = s_y;s_y = D_x; } Writ_Dot(s_x,s_y,Mode); D_x = e_x - s_x; D_y = e_y - s_y; if(D_x>0) { if(D_x>=D_y) { //0=<K<=1 while(s_x!=e_x) { if(Err>=0) { s_y+=1; Err+=(D_y-D_x); } else Err+=D_y; s_x+=1; Writ_Dot(s_x,s_y,Mode); } } else { //K>1 while(s_y!=e_y) { if(Err>0) { s_x+=1; Err+=(D_x-D_y); } else Err+=D_x; s_y+=1; Writ_Dot(s_x,s_y,Mode); } } } else { D_x = s_x - e_x; if(D_x>=D_y) { //-1=<K<0 while(s_x!=e_x) { if(Err>=0) { s_y+=1; Err+=(D_y-D_x); } else Err+=D_y; s_x-=1; Writ_Dot(s_x,s_y,Mode); } } else { //K< -1 while(s_y!=e_y) { if(Err<=0) Err+=D_x; else { s_x-=1; Err+=(D_x-D_y); } s_y+=1; Writ_Dot(s_x,s_y,Mode); } } } }
|