MFC关于画矩形框

偷不得懒 2014-06-07 04:46:46
void CputtyDlg::Drawmyline()
{

CDC*pDc = GetDC();
ASSERT_VALID(pDoc);
pDC->MoveTo(20, 30);
pDC->LineTo(200,300);
}
为什么这个代码无法执行?
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysnis 2014-06-07
  • 打赏
  • 举报
回复
要选画笔 SelectObject
caewow 2014-06-07
  • 打赏
  • 举报
回复
MFC绘图要有这样几个步骤: 1.获得绘图 DC ,一般在 OnPaint()、OnDraw() 等函数里可以直接使用,如果没有的话,调用 DetDC()即可; 2.创建绘图工具,比如 CPen、CBrush 等等,并设定其相关属性; 3.调用 DC 的 SelectObject() 函数将绘图工具选入,并且将 SelectObject() 的返回值保存起来,因为我们完成了绘图之后,还要恢复之前的状态,否则会导致异常; 4.调用 DC 的相关绘图函数进行绘图,比如 MoveTo()、LineTo()、Ellipse()等等; 5.调用 DC 的 SelectObject() 函数恢复之前的绘图工具; 6.调用 ReleaseDC() 函数释放 DC 。 最后给你一个完整的例子:
void CShowGraph::OnBnClickedOk()
{
	// TODO:  在此添加控件通知处理程序代码
	CDC *pDC = this->GetDC();

	CPoint point1(160, 50);
	
	CPen pen1(PS_SOLID, 3, COLORREF(RGB(0, 255, 0))),
			pen2(PS_SOLID, 3, COLORREF(RGB(0, 0, 255)));
	CPoint point2(60, point1.y + height * 2),
			point3(point2.x, point2.y + 100), point4;
	CPen *pOldPen = pDC->SelectObject(&pen1);
	pDC->MoveTo(point2);
	pDC->LineTo(point3);
	pDC->SelectObject(&pen2);
	point4 = point3 + CPoint(0, 100);
	pDC->LineTo(point4);
	pDC->SelectObject(&pen1);
	pDC->MoveTo(point2 + CPoint(10, 0));
	pDC->LineTo(point3 + CPoint(10, 0));
	pDC->SelectObject(&pen2);
	pDC->LineTo(point3 + CPoint(10, 100));

	pDC->SelectObject(pOldPen);
	this->ReleaseDC(pDC);
	//CDialogEx::OnOK();
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧