我采用Bresenham算法画一条直线,在一个对话框里填入起始点坐标,结果运行时发现,画出来的现在原来对话筐所占的矩形区域不能显示,请各位大侠不吝赐教:)
部分源代码如下:
void CDrawLineView::OnDrawLine() 
{
// TODO: Add your command handler code here
Dlg_enter m_dlg;
COLORREF m_color;
if(m_dlg.DoModal()==IDOK)
{
//Invalidate(FALSE);
UpdateData();

m_color=(m_dlg.m_color_red,m_dlg.m_color_green,m_dlg.m_color_blue);
CDrawLineView::reDrawLine(m_dlg.m_x0,m_dlg.m_y0,m_dlg.m_x1,m_dlg.m_y1,m_color);
        UpdateData(FALSE);
}


}
void CDrawLineView::reDrawLine(int x0,int y0,int x1,int y1,COLORREF color)
{
CDC*  pDC = GetDC();
int x,y,dx,dy,e;
dx=x1-x0;
dy=y1-y0;
e=-dx;
x=x0;
y=y0;
for(int i=0;i<=dx;i++)
{
pDC->SetPixel(x,y,color);
++x;
e=e+2*dy;
if(e>=0)
{
++y;
e=e-2*dx;
}
}
}