根据直线扫描转换
利用Bresenham算法原理
void CStraightLineView::OnDraw(CDC* pDC)
{
CStraightLineDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//利用直线计算公式
myLine(100,100,300,300);
//利用画笔绘制函数绘制直线
CPoint p0(400,400),p1(600,600);
CPen NewPen,*pOldPen;
NewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
pOldPen=pDC->SelectObject(&NewPen);
pDC->MoveTo(p0);
pDC->LineTo(p1);
pDC->SelectObject(pOldPen);
}
void CStraightLineView::myLine(int x0, int y0, int x1, int y1)
{
int x,y=y0;
float d,k=float(y1-y0)/(x1-x0);
CDC *pDC=GetDC();
d=0.5-k;
for(x=x0;x<x1;x++)
{
pDC->SetPixel (x+x0,y+y0,RGB(0,255,255));
if(d>=0) d=d-k;
else
{ d=d+1-k;
y++;
}
}
ReleaseDC(pDC);
}
在C…View头文件中在函数中添加相应的参数