新年新目标,从今天开始学习计算几何相关算法与实现,本工程主要使用VS2017、Win10完成。
一、项目搭建
1.1 新建MFC项目
首先创建新项目,选择MFC应用。
点击确定,
点击完成。
新建出来的解决方案如上图(可自行mfc教程了解每个类的继承关系及作用)。
1.2 绘制测试
新建完项目后,我们来使用尝试使用MFC中的GDI对象来进行相关绘制测试。
首先,我们需要在OnDraw函数(相当于MFC的main函数入口)中添加以下代码:
// CGeometricfiguretestView 绘图
void CGeometricfiguretestView::OnDraw(CDC* pDC)
{
CGeometricfiguretestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
// 绘制直线
pDC->MoveTo(100, 200);
pDC->LineTo(500, 400);
//绘制文字
pDC->TextOutW(100, 100,TEXT("geometry_learn"));
}
编译运行:
二、鼠标绘制直线
上述完成后,我们来完成一各小案例:使用鼠标左键按下与弹起绘制直线。
首先,我们需要在头文件CGeometricfiguretestView.h中添加两个点来记录鼠标位置。
protected:
CPoint p0, p1;
之后,我们使用类向导功能,添加鼠标左键按下消息。
选择相应类及消息,点击添加处理程序。
完成上述操作后,我们可以在cpp中找到对应添加的函数。
在鼠标按下OnLButtonDown中添加记录点击时的起点,在鼠标弹起OnLButtonUp中进行绘制操作。
void CGeometricfiguretestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
p0 = point;
CView::OnLButtonDown(nFlags, point);
}
void CGeometricfiguretestView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
p1 = point;
CDC* pdc = GetDC();
pdc->MoveTo(p0);
pdc->LineTo(p1);
ReleaseDC(pdc);
CView::OnLButtonUp(nFlags, point);
}
tip:不要忘记释放指针
编译运行,可见如下效果。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容