www.pudn.com > cwin.rar > DRAWLINE.C
/*-----------------------------------------------------------
函数 draw_line : 画直线
-----------------------------------------------------------*/
#include
void _Cdecl draw_line(x1,y1,x2,y2,color)
int x1; /* 直线始端列坐标(以象素为单位) */
int y1; /* 直线始端行坐标(以象素为单位) */
int x2; /* 直线末端列坐标(以象素为单位) */
int y2; /* 直线末端行坐标(以象素为单位) */
int color; /* 直线颜色 */
{
register int t,d;
int xer=0,yer=0,deta_x,deta_y,incx,incy;
deta_x=x2-x1;
deta_y=y2-y1;
if(deta_x>0)
incx=1;
else if(deta_x==0)
incx=0;
else
incx=-1;
if(deta_y>0)
incy=1;
else if(deta_y==0)
incy=0;
else
incy=-1;
deta_x=abs(deta_x);
deta_y=abs(deta_y);
if(deta_x>deta_y)
d=deta_x;
else
d=deta_y;
for(t=0;t<=d+1;t++)
{
_PutPixel(x1,y1,color);
xer+=deta_x;
yer+=deta_y;
if(xer>d)
{
xer-=d;
x1+=incx;
}
if(yer>d)
{
yer-=d;
y1+=incy;
}
}
}