设为首页 加入收藏

TOP

[VC++]001绘制直线
2014-11-23 18:54:22 】 浏览:5536
Tags:001 绘制 直线

初始学习VC++,记下点滴...以后还可以看,嘿嘿

绘制线条大家很容易想到了画图软件,简单的通过鼠标左键的点击移动来绘制。

首先建立MFC单文档DrawStraight工程,建立成功之后,在CDrawStraightView(后简称view)新建私有CPoint类型的m_ptOrigin,并在构造函数view中初始化为0;

private:
	CPoint m_ptOrigin;

CDrawStraightView::CDrawStraightView()
{
 // TODO: add construction code here
 m_ptOrigin = 0;

}


我们都知道线都有起点和终点,起点即是鼠标按下,终点是鼠标放开;

故添加消息响应函数OnLButtonDown以及OnLButtonUp;

其中在OnLButtonDown记录下线条起点

void CDrawStraightView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_ptOrigin = point;

	CView::OnLButtonDown(nFlags, point);
}

最后在OnLButtonUp中进行消息处理即可;

void CDrawStraightView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//利用sdk全局函数画线
	/*
	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);*/
    
	//利用MFC的CDC类实现画线功能
	/*CDC *pDC=GetDC();
	pDC->MoveTo(m_ptOrigin);
	pDC->LineTo(point);
	ReleaseDC(pDC);*/

	//利用MFC的CClientDC类实现画线功能
	/*CClientDC dc(this);
	//CClientDC dc(GetParent());
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);*/

	//利用MFC的CWindowDC类实现画线功能
	/*CWindowDC dc(this);
	//CWindowDC dc(GetParent());
	//CWindowDC dc(GetDesktopWindow());
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);*/

	//绘制彩色线条
	CPen pen(PS_DOT,1,RGB(0,255,0));
	CClientDC dc(this);
	CPen *pOldPen=dc.SelectObject(&pen);
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);
	dc.SelectObject(pOldPen);

	CView::OnLButtonUp(nFlags, point);
}

一般画线:

可以通过GetParent()可以在工具栏画线(注意线的位置)

以及通过GetDesktopWindow()从而在桌面窗口画:

最后可以通过CPen( intnPenStyle,>CPen pen(PS_DOT,1,RGB(255,0,0)); CClientDC dc(this); CPen *pOldPen=dc.SelectObject(&pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); dc.SelectObject(pOldPen);

绘制出:

工程免积分下载http://download.csdn.net/detail/xjm199/6753739

继续学习...o(∩_∩)o

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC 判断选中的 单选框 复选框的 下一篇VC开发圣诞程序雪花飞舞的世界

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目