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();