Visual Studio 2015下MFC画图个人笔记

来源:互联网 发布:Mac怎么安装压缩文件 编辑:程序博客网 时间:2024/05/20 17:59

 直线的绘制与画刷的使用

程序效果:在View视图的某一点出鼠标点击左键并按住,然后拖动鼠标直至松开鼠标左键。在View视图将获得一条由鼠标左键按下处到鼠标左键松开处的一条直线段。

1.新建MFC单文档程序,此处程序名Draw

2.为CDrawView添加成员变量,用于记录线段的起点

在类视图下右键单击CDrawView,选择“添加”->“添加变量”,访问选择“private”,变量类型为“CPoint”,变量名此处为m_ptStartPoint。



3. 使用类向导为CDrawView添加消息响应函数

为CDrawView分别添加鼠标按下与鼠标松开的消息响应函数,用于相应消息的处理。在类视图下右键单击CDrawView,选择“类向导”,选择“消息”栏,选中“WM_LBUTTONDOWN”,再选择“添加处理程序”,使用同样的方法添加“WM_LBUTTONUP”。




4.编辑消息响应函数

在上图中点击“编辑代码”可跳转至对应的消息响应函数。或在DrawView.cpp中找到这两个的消息响应函数。在OnLButtonDown中添加以下代码,用于保存线段的起始点。

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值m_ptStart = point;CView::OnLButtonDown(nFlags, point);}

在OnLButtonUp中添加以下代码,用于线段的绘制。

// 画线方式一HDC hdc;//使用全局函数获取View类窗口句柄hdc = ::GetDC(m_hWnd);MoveToEx(hdc, m_ptStart.x, m_ptStart.y, NULL);LineTo(hdc, point.x, point.y);::ReleaseDC(m_hWnd, hdc);// 画线方式二CDC *pDC = GetDC();pDC->MoveTo(m_ptStart);pDC->LineTo(point);ReleaseDC(pDC);// 画线方式三 使用CClientDC,无需使用GetDC()与ReleaseDC()CPen pen(PS_SOLID, 1, RGB(255, 0, 0));CClientDC clientDC(this);// 函数SelectObject(Cpen *pen)的返回值为被替换画笔对象的指针CPen *pOldPen = clientDC.SelectObject(&pen);clientDC.MoveTo(m_ptStart);clientDC.LineTo(point);clientDC.SelectObject(pOldPen);

使用画刷填充矩形区域,在OnLButtonUp中添加以下代码:

// 使用画刷填充矩形区域//CBrush brush(RGB(255, 0, 0));//CClientDC clientDC(this);//clientDC.FillRect(CRect(m_ptStart, point), &brush);

使用画刷加载位图,在OnLButtonUp中添加以下代码:

/** * 使用画刷加载位图 * 鼠标右键项目名————“添加”————“资源”————“Bitmap”————“新建” * 使用LoadBitmap()函数加载位图 *///CBitmap bitmap;//bitmap.LoadBitmapW(IDB_BITMAP1);//CBrush brush(&bitmap);//CClientDC clientDC(this);//clientDC.FillRect(CRect(m_ptStart, point), &brush);