CDC
所有设备环境类的基类,对GDI 的所有绘图函数进行了封装;可用来直接访问整个显示器或非显示设备(如打印机等)的上下文
CPaintDC
CPaintDC 用于响应窗口重绘消息(WM_PAINT)的绘图输出,不仅可对客户区进行操作,还可以对非客户区进行操作
CClientDC
代表窗口客户区的设备环境,一般在响应非窗口消息并对客户区绘图时要用到该类
CWindowDC
代表整个窗口的设备环境,包括客户区和非客户区;除非要自己绘制窗口边框和按钮,否则一般不用它
CMetaFileDC
代表Windows 图元文件的设备环境;一个Windows 图元文件包括一系列的图形设备接口命令,可以通过重放这些命令来创建图形;对CMetaFileDC 对象进行的各种绘制操作可以被记录到一个图元文件中
颜色的设置
如果显卡能支持,用户利用 COLORREF 数据类型定义颜色的种类可以超过1600 多万。
CPalette 类
封装 GDI 调色板。包含系统可用的色彩信息,是应用程序和彩色输出设备环境(如显示器)的接口。
CRgn 类
封装 GDI 区域。区域是窗口内的一块多边形或椭圆形区域。CRgn 用于设备环境(通常是窗口)内的区域操作,通常和CDC 类中与裁剪(clipping)有关的成员函数配合使用。
代码欣赏
CPen* PenOld,PenNew;
CBrush* BrushOld,BrushNew;
//选用库存黑色画笔
PenOld = (CPen*)pDC->SelectStockObject(BLACK_PEN);
//选用库存浅灰色画刷
BrushOld = (CBrush*)pDC->SelectStockObject(LTGRAY_BRUSH);
pDC->Rectangle(100,100,300,300);
//关联GDI 库存对象
PenNew.CreateStockObject(WHITE_PEN);
pDC->SelectObject(&PenNew);
pDC->MoveTo(100,100);
pDC->LineTo(300,300);
pDC->MoveTo(100,300);
pDC->LineTo(300,100);
//恢复系统默认的GDI对象
pDC->SelectObject(PenOld);
pDC->SelectObject(BrushOld);
PenNew.DeleteObject();
//创建有一个实心的画刷
CBrush* brush = new CBrush;
brush->CreateSolidBrush(RGB(255,0,0));
pDC->SelectObject(brush);
pDC->Rectangle(400,400,500,500);
//创建阴影画刷
CBrush BrushOl;
BrushOl.CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));
pDC->SelectObject(&BrushOl);
pDC->Rectangle(200,400,300,500);
//创建位图刷函数
CBrush BrushBit;
CBitmap Bitmap;
Bitmap.LoadBitmap(IDB_BITMAP1);
BrushBit.CreatePatternBrush(&Bitmap);
pDC->SelectObject(&BrushBit);
pDC->Rectangle(0,0,100,100);
//设置文本背景
pDC->SetBkColor(RGB(0,255,0));//背景颜色
pDC->SetBkMode(OPAQUE);//背景模式
pDC->SetTextAlign(TA_LEFT|TA_BOTTOM);//设置文本对齐方式
pDC->TextOut(0,100,"哈哈~~~//设置文本背景~~~");
//设置文本字体
CFont font;
VERIFY(font.CreatePointFont(200, "黑体", pDC));
pDC->SelectObject(&font);
pDC->TextOut(400,300,"哈哈~~~//设置文本字体~~~");
//使用CBitmap类,显示位图
CBitmap* pBitmap = new CBitmap;
pBitmap->LoadBitmap(IDB_BITMAP2);//将位图装入内存
CDC MemDc;
MemDc.CreateCompatibleDC(pDC);//创建内存设备环境
//将位图对象选入设备环境中,并保存原来设备环境的指针
CBitmap* pBitmapOld = MemDc.SelectObject(pBitmap);
BITMAP stBitmap;
pBitmap->GetBitmap(&stBitmap);//获取位图信息
//输出位图函数: 把源设备环境中的位图复制到目标设备环境中//显示位图
pDC->BitBlt(70,70,stBitmap.bmWidth,stBitmap.bmHeight,&MemDc,0,0,SRCCOPY);
pDC->SelectObject(pBitmapOld); //恢复设备环境