win10, vc6;新建一个单文档工程;
为视类添加鼠标左键弹起消息处理函数;
视类头文件添加一个成员变量:CPoint m_ptOrigin;
视类CPP文件构造函数中初始化,
CMypenView::CMypenView()
{
// TODO: add construction code here
m_ptOrigin.x=20;
m_ptOrigin.y=20;
}
不使用画笔效果如下;
创建一个10像素宽、红色的画笔后,画线效果如下;
鼠标左键弹起代码;
void CMypenView::OnLButtonUp(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default//HDC hdc;//hdc = ::GetDC(m_hWnd);//MoveToEx(hdc,m_ptOrigin.x, m_ptOrigin.y,NULL);//LineTo(hdc, point.x, point.y);//::ReleaseDC(m_hWnd,hdc);CWindowDC dc(this);CPen pen(PS_SOLID, 10, RGB(255,0,0));CPen *ptr = dc.SelectObject(&pen);dc.MoveTo(m_ptOrigin);dc.LineTo(point);dc.SelectObject(ptr);CView::OnLButtonUp(nFlags, point);}
CPen *ptr = dc.SelectObject(&pen);
画笔为CPen类对象;创建画笔之后,使用dc.SelectObject选入设备描述表;再画线即使用该画笔;上述语句的返回值为原来的画笔;画完图之后再使用dc.SelectObject(ptr) 把原来的画笔选进设备描述表;
画笔的样式定义如下,
PS_SOLID:实线
PS_DOT:点线
PS_DASH:划线
PS_DASHDOT:点划线
PS_DASHDOTDOT:一划两点的点划线
PS_NULL:透明线
PS_INSIDEFRAME:边框内沿线
如果觉得《mfc 使用画笔画线》对你有帮助,请点赞、收藏,并留下你的观点哦!