现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

分享画直线的代码

2012-08-16 07:47 工业·编程 ⁄ 共 628字 ⁄ 字号 暂无评论

这段代码太好了,跟大家一起分享它。

//左上角到右下角画直线.
//
//caimouse 2007/02/11
//
bool CSurface::LeftTopToRightBottom(int nXStart,int nYStart,int nDeltaX,int nDeltaY)
{
//
int nDelta = CNOS_NS::Max(nDeltaX,nDeltaY);

//计算判断符号,除2.
int nError = nDelta>>1;

//
if (nDeltaX < nDeltaY)
{
  for (int i = 0; i < nDelta; i++)
  {
   //画点.
   SetPixel(nXStart,nYStart,m_crCurColor);

   //向下移动一步。
   nYStart++;

   //dy/2 <= dx 判断选择那一点。
   nError += nDeltaX;
   if (nDeltaY <= nError)
   {
    //向左移动一步。
    nXStart++;
    nError -= nDeltaY;
   }
  }
}
else
{
  for (int i = 0; i < nDelta; i++)
  {
   //画点.
   SetPixel(nXStart,nYStart,m_crCurColor);

   //
   nXStart++;
   nError += nDeltaY;
   if (nDeltaX <= nError)
   {
    nYStart++;
    nError -= nDeltaX;
   }
  }
}

return true;
}

给我留言

留言无头像?