mfc 使用画笔画线

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:边框内沿线

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/114004602