+ -
当前位置:首页 → 问答吧 → 绘制直线???

绘制直线???

时间:2011-11-25

来源:互联网

如何实现窗口中点的捕捉,也就是说鼠标在窗口中点下去,产生一个点,然后鼠标弹起来有捕捉一个点,两点连接,产生一条线????还有就是如何实现鼠标点击两个点,之后就产生了一条连接这两个点的直线????

作者: yiqinuliok1234   发布时间: 2011-11-25

WM_LBUTTONDOWN/WM_LBUTTONUP消息响应中记录下起点和终点的左边,然后在OnDraw/OnPaint中MoveTo,LineTo();

作者: VisualEleven   发布时间: 2011-11-25

楼上说的对,听楼上的

作者: q_orange   发布时间: 2011-11-25

我试了一下,先在视图内定义了两个全局变量
CPoint m_point1;
CPoint m_point2;
之后用鼠标左键按下去得点记录起点,左键谈起记录终点,画直线,但是在窗口中并没实现直线的绘制啊???
void Cmfc1View::OnDraw(CDC* pDC)
{
Cmfc1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->MoveTo(m_point1.x,m_point1.y);
pDC->LineTo(m_point2.x,m_point2.y);

// TODO: 在此处为本机数据添加绘制代码
}
void Cmfc1View::OnLButtonDown(UINT nFlags, CPoint point)
{
m_point1=point;

CView::OnLButtonDown(nFlags, point);
}

void Cmfc1View::OnLButtonUp(UINT nFlags, CPoint point)
{
m_point2=point;

CView::OnLButtonUp(nFlags, point);
}

作者: yiqinuliok1234   发布时间: 2011-11-25

忘了用Invalidate()更新视图了;呵呵额

作者: yiqinuliok1234   发布时间: 2011-11-25