我采用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;
}
}
}
部分源代码如下:
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;
}
}
}
解决方案 »
- 请问该用ACE吗?
- 谁有能在Win98下获取网卡地址的程序啊(主要是获取Subnet 和 Gateway)?
- 高分求解!高手请进,如何获取用户的登陆时间。。。。。
- 【求助】在ActiveX中如何取得HTTP服务器的IP地址?
- 怎样在程序中动态的设置Button 的Default button属性???
- CTime 如何转化为 DWORD?
- 关于OnDraw,OnPaint,OnCtrColor,OnDrawItem,DrawItem调用顺序和功能
- 散分,顺便请各位为论坛提点建议
- pb中使用条形码控件MSBCODE9.OCX?
- 怎么样给CListCtrl控件添加CComboBox控件?
- 写了音频网络传输的程序,是用UDP发送的,怎么样让UDP发送的数据穿过服务器进入局域网中的一个电脑?
- 工具栏的制作
试试,写在画线的开如部分