利用MFC 的CDC 类实现画线功能

   MFC为我们提供了一个设备描述表的封装类CDC,该类封装了所有与绘图相关的操作。该类提供了一个数据成员m_hDC,用来保存于CDC 类相关的DC 句柄。

其道理,与CWnd类提供m_hWnd成员变量保存与窗口相关的窗口句柄是一样的。代码如下:

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	
/*	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);//释放DC 
	*/

	CDC *pDC=GetDC();
	pDC->MoveTo(m_ptOrigin);
	pDC->LineTo(point);
	ReleaseDC(pDC);

	CView::OnLButtonUp(nFlags, point);
}

    利用MFC 类实现画线功能时,首先需要定义一个CDC 类型的指针,并利用CWnd类的成员函数GetDC 获取当前窗口的设备描述表对象的指针;

接着,利用CDC类的成员函数MoveTo和LineTo完成画线操作;最后,调用CWnd类的成员函数ReleaseDC释放设备描述表资源。

   Build并运行Drawc程序,拖动鼠标同样可以在窗口中绘制直线。

提示:

       因为CWnd类提供了成员函数GetDC和ReleaseDC,因此先前利用Platform SDK函数实现画线功能时,这两个函数前面都加上了"::",表明它们是全局函数。否则,VC++编译器将认为它们是CWnd类的成员函数。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值