在MFC程序设计中,屏幕的绘图是通过设备环境实现的,它是图形设备接口的重要元素。它代表了具体的物理设备,隐藏了物理设备的差异,例如打印机和屏幕之间的差异。设备的无关性使得用户不用关心具体的物理设备的显示,只需要调用相应的函数去进行显示就行了。
设备环境类
- CPaintDC:这是一个专门用来显示功能的类,在实际应用中只要得到相关的CDC指针,就可以将它当成任何设备环境的指针使用。
- CClientDC:表示在窗口的客户区内进行绘图,这个区域不包括标题栏、菜单栏、窗口的边框和状态栏。绘图时客户区的左上角的坐标为(0,0),构造函数调用GetDC,析构函数调用ReleaseDC。
- CWindowdDC:表示整个窗口,包括客户区和非客户区。它在窗口的任何位置进行绘图。他定义了窗口左上角坐标为(0,0),CWindowDC构造函数调用GetWindowDC,析构函数调用ReleaseDC。
- CMetaFileDC:封装了在Windows图元文件中绘图的方法,图元文件是一系列与设备无关的图片集,一个图元文件包含图形设备接口,可以通过重放命令来创建图形。
映射模式
- MM_LOMETRIC:0.1毫米
- MM_HIMETRIC:0.01毫米
- MM_ISOTROPIC:纵横比1:1
绘图
画笔
- PS_DASH虚线
- PS_DASHDOT点划线
- PS_DASHDOTDOT双点划线
- PS_DOT点线
- PS_INSIDEFRAME实线
- PS_NULL无
- PS_SOLID实线
创建画笔
CPen(int nPenStyle,int nWidth,COLORREF crColor);
CPen(int nPenStyle,int nWidth,const LOGBRUSH* pLogBrush,
int nStyleCount = 0,const DWORD* lpStyle=NULL);
将画笔加入设备环境
CPen* SelectObject(CPen* pPen)
创建新画笔、保存旧画笔
CPen *oldpen;
Cpen pen(PS_DOT,1,RGB(0,0,0));
oldpen=pDC->SelectObject(&pen);
//画图操作......
pDC->SelectObject(&oldpen);
创建画笔并保存其句柄
CPen *oldpen;
CPen pen(PS_DOT,1,RGB(0,0,0));
oldpen=pDC->SelectObject(&pen);//选入设备环境
m_oldPen=(HPEN)oldpen->GetSafeHandle();//保留画笔句柄
//画图操作.....
pDC->SelectObject(&oldpen);
//把它定义一个类的成员变量
//则在其他函数中可以使用下面的语句再次从该句柄中获得画笔
pDC->SelectObject(CPen::FromHandle(m_oldPen));
画刷
//crColor指定填充色,nIndex指定画刷样式
CBrush(COLORREF crColor);//创建实心画刷
CBrush(int nIndex,COLORREF crColor);//创建填充画刷
CBrush(CBitmap* pBitmap);//创建利用pBitmap指向的位图作为填充的画刷
创建画刷
CBrush *oldbrush;
CBrush brush(HS_CROSS,RGB(0,0,0));
oldbrush=pDC->SelectObject(&brush);
//画图。。。。
pDC->SelectObject(&oldbrush);
绘图相关的数据类型
- COLORREF:颜色分量
BYTE GetRValue(DWORD rgb);//获取红色分量
BYTE GetGValue(DWORD rgb);
BYTE GetBValue(DWORD rgb);

最低0.47元/天 解锁文章
800

被折叠的 条评论
为什么被折叠?



