怎样用VC++的MFC画矩形?

怎样用VC++的MFC画矩形?,第1张

相应WM_PAINT消息,然后在里面加入绘制矩形的代码。

例如:

CClientDC dc(this)//选定当前画图环境

CPen pen(PS_SOLID,1,#ff0000)//做一支红色粗细为1的笔

dc.SelectObject(&pen)//将pen放到dc上

dc.Rectangle(100,100,200,200)//画一个矩形

参考资料:

http://blog.csdn.net/zyq11223/article/details/8271006

题目: 编写MFC下的单文档程序,绘制矩形,矩形坐上角、右下角坐标由对话框输入。

思路:使用CDC的Draw3dRect函数可以直接在视图上绘制矩形,只是这个函数需要的是左上角坐标与矩形的长宽,所以我们需要通过左上角坐标与右下角坐标转换计算出矩形长宽。

实现过程:

1. 创建名为drawrect的单文档视图程序

2. 为CDrawrectView类添加成员变量来存放左上角坐标与右下角坐标

3. 在CDrawrectView类的OnDraw函数中根据左上角坐标与右下角坐标绘制矩形

4. 添加对话框资源用来输入左上角坐标与右下角坐标并为这个对话框添加相应的类与成员变量

5. 让CDrawrectView响应OnFileNew函数,在这个函数中d出对话框要求用户输入左上角坐标与右下角坐标,把用户输入保存到CDrawrectView的相应成员变量中并强迫视图重绘。

关键代码:

void CDrawrectView::OnDraw(CDC* pDC)

{

 CDrawrectDoc* pDoc = GetDocument()

 ASSERT_VALID(pDoc)

 

 pDC->Draw3dRect(m_nX1, m_nY1, m_nX2 - m_nX1, m_nY2 - m_nY1, RGB(0, 0, 0), RGB(0, 0, 0))

}

void CDrawrectView::OnFileNew()

{

 CDlgPosition dlgPosition

 if (dlgPosition.DoModal() == IDOK)

 {

  m_nX1 = dlgPosition.m_nX1

  m_nY1 = dlgPosition.m_nY1

  m_nX2 = dlgPosition.m_nX2

  m_nY2 = dlgPosition.m_nY2

 }

Invalidate()         //Force view redraw

}

运行结果:

完整代码见附件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11411027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存