八个方向的画直线代码

void Frog_Graphic_Line(int xa, int ya, int xb,int yb, int color)
{
 float x, y;
 float dx, dy;
 float k; // 直线的斜率
 float x0=xa,y0=ya,x1=xb,y1=yb,lx,ly;
 if(yb<ya)
    yb=2*ya-yb;//转化到第三象限  
   if(xb<xa)    
    xb=2*xa-xb;
   dx = (float)(xb - xa);
 dy = (float)(yb - ya);
 k = dy / dx;
 x = xa;
 y = ya;
 if (abs(k) <= 1)
 {
  for (x = xa; x <= xb; x++)
  { 
   if(x1<x0)
    lx=2*x0-x;
   else
    lx=x;
   if(y1<y0)
    ly=2*y0-y;
   else
    ly=y;
   SetPixel(lx, (int)(ly + 0.5), color);
   y = y + k;
  }

 }
 else
 {
  for (y = ya; y <= yb; y++)

  {
   if(x1<x0)
    lx=2*x0-x;
   else
    lx=x;
   if(y1<y0)
    ly=2*y0-y;
   else
    ly=y;
   SetPixel((int)(lx + 0.5), ly, color);   
   x = x + 1 / k;

  }

 }

}

你可能感兴趣的:(float)