Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图

Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图

ID:40239564

大小:1.03 MB

页数:75页

时间:2019-07-28

Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图_第1页
Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图_第2页
Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图_第3页
Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图_第4页
Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图_第5页
资源描述:

《Visual C++应用教程 郑阿奇 丁有和 第7章图形、文本和位图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章图形、文本和位图7.1概述7.2图形设备接口7.3图形绘制7.4字体与文字处理7.5在对话框及控件中绘图7.6综合应用7.1概述7.1.1设备环境类设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了CPaintDC、CClientDC、CWindowDC和CMetaFileDC类。(1)CPaintDC比较特殊,它的构造函数和析构函数都是针对OnPaint进行的,但用户一旦获得相关的CDC指针,就可以将它当成任何设备环境(包括屏幕、打印机)指针来使用。CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用En

2、dPaint。(2)CClientDC只能在窗口的客户区(不包括边框、标题栏、菜单栏以及状态栏)中进行绘图,点(0,0)通常指的是客户区的左上角。而CWindowDC允许在窗口的任意位置中进行绘图,点(0,0)指整个窗口的左上角。CWindowDC和CClientDC构造函数分别调用GetWindowDC和GetDC,但它们的析构函数都是调用ReleaseDC函数。(3)CMetaFileDC封装了在一个Windows图元文件中绘图的方法。图元文件是一系列与设备无关的图片的集合,由于它对图象的保存比像素更精确,因而往往在要求较高的场合下使用,例如AutoCAD的图像保存等。目前的Windo

3、ws已使用增强格式(enhanced-format)的32位图元文件来进行操作。7.1概述7.1.2坐标映射在讨论坐标映射之前,先来看看下列语句:pDC->Rectangle(CRect(0,0,200,200));它是在某设备环境中绘制出一个高为200个像素,宽也为200个像素的方块。由于默认的映射模式是MM_TEXT,其逻辑坐标(在映射模式下的坐标)和设备坐标(显示设备或打印设备坐标系下的坐标)相等。因此这个方块在1024x768的显示器上看起来要比在640x480的显示器上显得小一些,而且若将它打印在600dpi精度的激光打印机上,这个方块就会显得更小了。为了能保证打印的结果不受设备

4、的影响,Windows定义了一些映射模式,这些映射模式决定了设备坐标和逻辑坐标之间的关系,如表7.1所示。表7.1映射模式映射模式含义MM_TEXT每个逻辑单位等于一个设备像素,x向右为正,y向下为正MM_HIENGLISH每个逻辑单位为0.001英寸,x向右为正,y向上为正MM_LOENGLISH每个逻辑单位为0.01英寸,x向右为正,y向上为正MM_HIMETRIC每个逻辑单位为0.01毫米,x向右为正,y向上为正MM_LOMETRIC每个逻辑单位为0.1毫米,x向右为正,y向上为正MM_TWIPS每个逻辑单位为一个点的1/20(一个点是1/72英寸),x向右为正,y向上为正MM_AN

5、ISOTROPICx,y可变比例MM_ISOTROPICx,y等比例7.1概述在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,常常可以调用CDC::SetWindowExt(设置窗口大小)和CDC::SetViewportExt(设置视口大小)函数来设置所需要的比例因子。这里的“窗口”和“视口”的概念往往不易理解。所谓“窗口”,可以理解成是一种逻辑坐标下的窗口,而“视口”是实际看到的那个窗口,也就是设备坐标下的窗口。根据“窗口”和“视口”的大小就可以确定x和y的比例因子,它们的关系如下:x比例因子=视口x大小/窗口x大小y比例因子=视口y大小/窗口y大小[例Ex_Dra

6、w]通过设置窗口和视口大小来改变显示的比例(1)创建一个默认的单文档应用程序Ex_Draw。7.1概述(2)在CEx_DrawView::OnDraw函数中添加下列代码:voidCEx_DrawView::OnDraw(CDC*pDC){CEx_DrawDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);CRectrectClient;GetClientRect(rectClient);//获得当前窗口的客户区大小pDC->SetMapMode(MM_ANISOTROPIC);//设置MM_ANISOTROPIC映射模式pDC->SetWindowExt(1

7、000,1000);//设置窗口范围pDC->SetViewportExt(rectClient.right,-rectClient.bottom);//设置视口范围pDC->SetViewportOrg(rectClient.right/2,rectClient.bottom/2);//设置视口原点pDC->Ellipse(CRect(-500,-500,500,500));}7.1概述(3)编译运行,结果如图7.1所

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。