分享画直线的代码

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

//左上角到右下角画直线.
//
//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;

posted @ 2007-02-12 13:56  ajuanabc  阅读(254)  评论(0编辑  收藏  举报