第10章 Winodws图形处理与文本输入输出

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

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值