欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

卷二:图形编程MFC第1篇:画笔、画刷、

发布时间:2023/12/20 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 卷二:图形编程MFC第1篇:画笔、画刷、 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.MFC文件创建:(1)创建基于对话框的项目,可以直接拖组件;

(2)创建单个文档的项目,所有的时间自己编写。

2.常用画图对象学习

(1)画线:①项目->类向导->选择view类->添加消息->添加鼠标落下OnLButtonDown方法;

                    ②同上添加鼠标松开OnLButtonUp方法;

                    ③同上方法,选择在view类中添加CPoint m_pOrient;  表示鼠标单击时的坐标;

                       

class Cm4View : public CView {//XXX 系统其余代码 private:CPoint m_pOrigin; //CPoint是坐标类 }void Cm4View::OnLButtonDown(UINT nFlags, CPoint point) {c_pOrient = point; //记录按下点坐标//MessageBox(_T("欢迎")); CView::OnLButtonDown(nFlags, point); //系统代码 }void Cm4View::OnLButtonUp(UINT nFlags, CPoint point) {CDC *pDC = GetDC(); //获得设备上下文,才能使用设备pDC->MoveTo(c_pOrient); //移到起点 //创建画笔对象,注意用完之后换回原来的笔CPen pen = (PS_SOLID,1,RGB(255,0,0)); //PS_DASH虚线、PS_DOT点CPen *pOldPen = pDC->SelectObject(&pen); //selectObject返回参数的原来类型,保存旧笔pDC.LineTo(point); //下去的时候,一直会划线pDC.SelectObject(pOldPen); //换回原来的画笔ReleaseDC(pDC); //释放设备CView::OnLButtonUp(nFlags, point); //系统自动代码 }

(2) 画矩形

 

void Cm4View::OnLButtonDown(UINT nFlags, CPoint point) {c_pOrient = point; //记录按下点坐标CView::OnLButtonDown(nFlags, point); //系统代码 }void Cm4View::OnLButtonUp(UINT nFlags, CPoint point) {CClientDC dc(this); //获得设备上下文,局部变量,不需要释放// 创建画刷,画透明矩形CBrush *brush = CBrush::FormHundle((HBRUSH)GetStockObject(NULL_BRUSH)); //获得系统透明画刷,返回指针CBrush *oldBrush = dc.SelectObject(brush);dc.Rectangle(c_pOrient,point); //设备从鼠标落下处到松开画透明矩形dc.SelectObject(oldBrush);CBrush brush(RGB(0,255,0)); //新画刷dc.FillRect(CRect(c_pOrient,point),&brush); //创建带颜色填充矩形CView::OnLButtonUp(nFlags, point); //系统自动代码 }

 (3)画扇形,划线跟着鼠标走

class Cm4View : public CView {//XXX 系统其余代码 private:CPoint m_pOrigin; //CPoint是坐标类bool m_bDraw = false; //鼠标是否点击 } void Cm4View::OnLButtonDown(UINT nFlags, CPoint point) {c_pOrient = point; //记录按下点坐标m_bDraw = ! m_bDraw;CView::OnLButtonDown(nFlags, point); //系统代码 }void Cm4View::OnMouseMove(UINT nFlags, CPoint point) //添加鼠标移动事件 {CClientDC dc(this); //获得设备上下文,局部变量,不需要释放CPen pen(PS_SOLID, 1, RGB(0, 255, 255));CPen* pOldPen = dc.SelectObject(&pen); //换画笔线的颜色、类型if(m_bDraw) {dc.MoveTo(m_pOrigin); //移到第一个点dc.LineTo(point); //随时point划线m_pOrigin = point; //一定更新起始点}dc.SelectObject(pOldPen);CView::OnLButtonUp(nFlags, point); //系统自动代码 }

 (4)画椭圆、文字

void Cm4View::OnLButtonDown(UINT nFlags, CPoint point) {c_pOrient = point; //记录按下点坐标CView::OnLButtonDown(nFlags, point); //系统代码 }void Cm4View::OnLButtonUp(UINT nFlags, CPoint point) {CClientDC dc(this); //获得设备上下文,局部变量,不需要释放CPen pen(PS_DASH, 1, RGB(0, 0, 255));CPen* pOldpen = dc.SelectObject(&pen);dc.Eclipse(CRect(c_pOrient,point)); //类似矩形画椭圆dc.SelectObject(pOldpen);CFront front; //创建字体对象CString str(_T("Hello world!"));front.CreatePointFont(200,"华文楷体"); //20磅CFront *oldFont = dc.SelectObject(&font);dc.SetTextColor(RGB(0,255,0));dc.TextOut(ponit.x,point.y,str,str.GetLength()); //输出文字,四个参数dc.SelectFont(oldFont); CView::OnLButtonUp(nFlags, point); //系统自动代码 }

 

总结

以上是生活随笔为你收集整理的卷二:图形编程MFC第1篇:画笔、画刷、的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。