八个方向的画直线代码

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;

  }

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值