下载此文档

第08章绘图字体和位图.ppt


文档分类:IT计算机 | 页数:约37页 举报非法文档有奖
1/37
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/37 下载此文档
文档列表 文档介绍
    概述
    设备环境类
  (1)  CPaintDC
CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。
(2)  CClientDC 和CWindowDC
lientDC构造函数分别调用GetWindowDC和GetDC,但它们的析构函数 都是调用ReleaseDC函数。
(3)  CMetaFileDC
CMetaFileDC封装了在一个Windows图元文件中绘图的方法。
    坐标映射
为了能保证打印的结果不受设备的影响,Windows定义了一些映射模式,这些映射模式决
定了设备坐标和逻辑坐标之间的关系。它们是:
MM_TEXT 每个逻辑单位等于一个设备像素,x向右为正,y向下为正
MM_HIENGLISH ,x向右为正,y向上为正
MM_HIMETRIC ,x向右为正,y向上为正
MM_ANISOTROPIC x,y可变比例
MM_ISOTROPIC x,y等比例
MM_LOENGLISH ,x向右为正,y向上为正
MM_LOMETRIC ,x向右为正,y向上为正
MM_TWIPS 每个逻辑单位为一个点的1/20(一个点是1/72 英寸),
x向右为正,y向上为正。
    概述
在MM_ISOTROPIC映射模式下,纵横比总是1:1,换句话说,无论比例因子如何变化,圆总是圆的;但在MM_ANISOTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。
将一个椭圆绘制在视窗中央,且当视图的大小发生改变时,椭圆的形状也会随之改变:
void CMyView::OnDraw(CDC* pDC)
{ CRect rectClient;
GetClientRect(rectClient); // 获得当前窗口的客户区大小
pDC->SetMapMode(MM_ANISOTROPIC);// 设置MM_ANISOTROPIC映射模式
pDC->SetWindowExt(1000,1000); // 设置窗口范围
pDC->SetViewportExt(,-);// 设置视口范围
pDC->(,);// 设置视口原点
pDC->Ellipse(CRect(-500,-500,500,500));
}
    图形设备接口
  1.     使用GDI对象
在选择GDI对象进行绘图时,往往遵循着下列的步骤:
(1)  在堆栈中定义一个GDI对象(如CPen、CBrush对象),然后用相应的函数(如CreatePen、 CreateSolidBrush)创建此GDI对象。
    概述
(2)  将构造的GDI对象选入当前设备环境中,但不要忘记将原来的GDI对象保存起来。
(3)  绘图结束后,恢复当前设备环境中原来的GDI对象。
(4)  由于GDI对象是在堆栈中创建中,当程序结束后,框架会自动删除程序创建的GDI对象。
具体操作可像下面的代码过程:
void CMyView::OnDraw( CDC* pDC )
{
CPen penBlack; // 定义一个画笔变量
( PS_SOLID, 2, RGB(0,0,0)); // 创建画笔
// 将此画笔选入当前设备环境并保存原来的画笔
CPen* pOldPen = pDC->SelectObject( &penBlack );
// 用此画笔绘图
pDC->MoveTo(...);
pDC->o(...);
pDC->SelectObject( pOldPen ); // 恢复设备环境中原来的画笔
}
2.     库存的GDI对象
Windows包含了一些库存的可以利用的GDI对象。CDC的成员函数SelectStockObject可以把一个库存对象选入当前设备环境中,并返回原先被选中的对象指针,同时使原先被选中的对象从设备环境中分离出来。如下面的代码:
    概述
void CMyView::OnDraw( CDC* pDC )
{
CPen newPen( PS_SOLID, 2, RGB(0,0,0) ) )
pDC->SelectObject( &newPen );
pDC->MoveTo(...);
pDC->o(...);
pDC->

第08章绘图字体和位图 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数37
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小608 KB
  • 时间2018-06-23