|  | 
 
 发表于 2003-9-16 23:49:00
|
显示全部楼层 
Re:刚刚写了一个画线段的函数,不知道对错,望高手指教~~
| // ------------------------------------------------------- // Name: DrawLine()
 // Describe: 绘线(基于Buffer)
 // -------------------------------------------------------
 HRESULT CDisplay:
  rawLine( LP_BITMAPX pBitmap, int nBeginX, int nBeginY, int nEndX, int nEndY, PIXEL Color ) {
 #if _DEBUG
 ASSERT(pBitmap);
 ASSERT(pBitmap->GetBuffer());
 #endif
 
 register int t;
 int distance;
 int x = 0, y = 0, delta_x, delta_y, incx, incy;
 delta_x = nEndX-nBeginX;
 delta_y = nEndY-nBeginY;
 if(delta_x > 0)
 incx = 1;
 else if(delta_x == 0)
 incx = 0;
 else
 {
 delta_x = -delta_x;
 incx = -1;
 }
 if(delta_y > 0)
 incy = 1;
 else if(delta_y == 0)
 incy = 0;
 else
 {
 delta_y = -delta_y;
 incy = -1;
 }
 if(delta_x > delta_y)
 distance = delta_x; /* **** */
 else
 distance = delta_y;
 for(t=0; t<distance+2; t++)
 {
 //                pBitmap->m_pBuffer[nBeginX + nBeginY * pBitmap->m_nPitchWidth] = Color;
 DrawPixel(pBitmap, nBeginX, nBeginY, Color);
 x += delta_x;
 y += delta_y;
 if(x > distance)
 {
 x -= distance;
 nBeginX += incx;
 }
 if(y > distance)
 {
 y -= distance;
 nBeginY += incy;
 }
 }
 return S_OK;
 }
 
 
 这是一段hoho里面的画线函式,不知道对你有没有用。
 你上面的那段代码可以自己执行测试一下才能知道对错。
 | 
 |