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; 
            } 
        } 
    }