MFC画图学习( CDC类 CPen CBrush)

CDC类

        CDC类是一个设备上下文类。

         CDC类几乎封装了所有的Windows GDI函数,另外,MFC中还有几个由CDC类派生的子类,包括CWindowDC、CPaintDC、CClientDC、CMetaFileDC,它们用来进行一些特定的绘图操作。

       CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户区关联的显示上下文的成员函数。使用CDC的成员函数可以进行所有的绘图操作,包括处理绘图工具、GDI对象的选择、颜色和调色板的处理、获取和设置绘图属性、映射、窗口范围、坐标转换、剪切以及绘制直线、简单图形、椭圆和多边形等。

       一般我们在使用完CDC对象后要记得删除它,否则会有内存泄露。很多情况下我们可以调用CWnd::GetDC()函数来获取设备上下文指针,即CDC指针,这个时候记得用完后调用CWnd::ReleaseDC()函数释放设备上下文。

CDC画图成员函数

1设置坐标点的颜色

COLORREF SetPixel(int x,int y,COLORREF crColor);
COLORREF SetPixel(POINT point,COLORREF crColor);

2将当前点移动到指定位置

 CPoint MoveTo(int x,int y);
 CPoint MoveTo(POINT point);

3画直线

 BOOL LineTo(int x,int y);
 BOOL LineTo(POINT point);

4画矩形

 BOOL Rectangle(int x1,int y1,int x2,int y2);
  BOOL Rectangle(LPCRECT lpRect);

5画椭圆

 BOOL Ellipse(int x1,int y1,int x2,int y2);
  BOOL Ellipse(LPCRECT lpRect);

CPen类(一个GDI对象)

画笔的应用实例

CDC* pClientDC = GetDC();    //生成并获取CDC

CPen pen(PS_DASH, 10, RGB(199, 99, 99));        //初始化画笔  (样式,粗细,颜色)

CPen* oldPen = pClientDC->SelectObject(&pen);  载入画笔

pClientDC->Rectangle(rect);  //绘制矩形

pCLientDC->SelectObject(oldPen);  //恢复画笔

pen.DeleteObject();        //删除画笔
oldPen->DeleteObject();   //删除旧画笔
pClientDC->DeleteDC();  

 CBrush画刷(一个GDI对象)
画刷的实例

CDC* dc= GetDC();    //生成并获取CDC

CBrush cbrush1;

CBrush* pBrush; //旧笔刷

cbrush1.CreateHatchBrush(lbHatch,RGB(0,0,0)); //建立带花纹笔刷

pBrush=dc->SelectObject(&cbrush1);

//载入笔刷  dc->SelectObject(&cbrush1)的作用是载入了新画刷 但是SelectObject函数对会把变化之前的画刷作为返回值返回 这样pBrush中保存的就是SelectObject的返回值,也就是旧画刷

dc->Rectangle(&rect); //绘制矩形

dc->SelectObject(pBrush); //恢复笔刷

cbrush1.DeleteObject();

pBrush->DeleteObject();

pClientDC->DeleteDC();  

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值