第7章图形、文本和打印课件

上传人:我*** 文档编号:140861316 上传时间:2020-08-02 格式:PPT 页数:90 大小:3.54MB
返回 下载 相关 举报
第7章图形、文本和打印课件_第1页
第1页 / 共90页
第7章图形、文本和打印课件_第2页
第2页 / 共90页
第7章图形、文本和打印课件_第3页
第3页 / 共90页
第7章图形、文本和打印课件_第4页
第4页 / 共90页
第7章图形、文本和打印课件_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《第7章图形、文本和打印课件》由会员分享,可在线阅读,更多相关《第7章图形、文本和打印课件(90页珍藏版)》请在金锄头文库上搜索。

1、第7章图形、文本和打印,图形、文本和打印,Window为操作系统和硬件提供了图形用户接口GUI(Graphics Users Interface)。所有的信息,甚至文本,在Windows下都可以作为图形画到屏幕上。 Window的GDI(设备图形接口)提供了绘图的基本工具,如画点、线、多边形、位图以及文本输出。主要负责系统与用户或绘图程序之间的信息交换,并在输出设备上显示图形或文字。 MFC提供了设备环境类CDC和图形对象类CGdiObject来完成绘图操作。,7.1 设备环境和简单数据类,1,设备环境,设备环境是由Windows保存的一个数据结构,包含应用程序向设备输出时所需要的信息,如当前

2、背景色或区域图案、区域的无效部分等。 Windows通过设备环境确定任何输出设备的GDI输出的位置和图形的属性。 当用户绘图时,需要访问设备描述表DC(Device Context),它的主要作用是提供程序与物理设备或者伪设备之间的联系,另外还处理绘图属性设置,如文本颜色设置。,7.1.1 设备环境类,设备环境类CDC是GDI封装在MFC中的最大的一个类,它表示总的DC,是所有DC类的基类。CDC类定义环境对象,并提供在显示器、打印机或窗口客户区上绘制图形的方法,它封装了使用设备环境的GDI函数。 CDC类的成员函数有近200个,可分为位图函数、剪裁函数、绘图属性函数、初始化函数和字体函数等。

3、,7.1.1 设备环境类,设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了CPaintDC、CClientDC、CWindowDC和CMetaFileDC类。 (1)CPaintDC比较特殊,它的构造函数和析构函数都是针对OnPaint进行的,但用户一旦获得相关的CDC指针,就可以将它当成任何设备环境(包括屏幕、打印机)指针来使用。CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。,7.1.1 设备环境类,(2)CClientDC只能在窗口的客户区(不包括边框、标题栏、菜单栏以及状态栏)中进行绘

4、图,点(0,0)通常指的是客户区的左上角。而CWindowDC允许在窗口的任意位置中进行绘图,点(0,0)指整个窗口的左上角。WindowDC和CClientDC构造函数分别调用GetWindowDC和GetDC,但它们的析构函数都是调用ReleaseDC函数。 (3)CMetaFileDC封装了在一个Windows图元文件中绘图的方法。图元文件是一系列与设备无关的图片的集合,由于它对图象的保存比像素更精确,因而往往在要求较高的场合下使用。目前的Windows已使用增强格式(enhanced-format)的32位图元文件来进行操作。,7.1.2 坐标映射,要指定绘图位置,需使用坐标系。Win

5、dows提供了两类坐标系:设备坐标系和逻辑坐标系。 逻辑坐标就是内存中虚拟的坐标,可以理解为看不见的,而设备坐标就是跟具体的设备相联系的坐标系统,如:显示器和打印机设备坐标系下的坐标,大小与分辨率有关。 为了能保证打印的结果不受设备的影响,Windows定义了一些映射模式,不同的映射模式决定了设备坐标和逻辑坐标之间的转换关系,也就是两种坐标系统在相互转换时,逻辑单位和设备单位之间的某种比例关系。 说明:Windows中,只有对需要设备环境句柄作参数的GDI函数,映射方式才会起作用。,映 射 模 式,视口和窗口,窗口:可以理解成一种逻辑坐标下的窗口 视口:可以理解成实际看到的那个窗口,即设备坐标

6、下的窗口,通常与客户区相同, 窗口和视口是与映射模式相关联的,映射方式就是用于从“窗口”(逻辑坐标)到“视口”(设备坐标)的映射。在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,常常可以调用CDC:SetWindowExt()和CDC:SetViewportExt()来设置所需要的比例因子。 根据“窗口”和“视口”的大小可以确定x和y的比例因子,它们的关系如下: x比例因子=视口x大小/窗口x大小 y比例因子 =视口y大小/窗口y大小,7.1.3. CPoint、CSize和CRect,CPoint、CSize和CRect类是对Windows的POINT、SIZE和RECT

7、结构的封装,因此它们可以直接使用各自结构的数据成员。 typedef struct tagPOINT LONG x; /点的x坐标 LONG y; /点的y坐标 POINT; CPoint类带参数的常用构造函数原型如下: CPoint( int initX, int initY ); CPoint( POINT initPt );,7.1.3. CPoint、CSize和CRect,typedef struct tagSIZE int cx; /水平大小 int cy; /垂直大小 SIZE; CSize类带参数的常用构造函数原型如下: CSize( int initCX, int initC

8、Y ); CSize( SIZE initSize );,7.1.3. CPoint、CSize和CRect,typedef struct tagRECT LONG left; /左上角点的x坐标 LONG top; /左上角点的y坐标 LONG right; /右下角点的x坐标 LONG bottom;/右下角点的y坐标 RECT; CRect类带参数的常用构造函数原型如下: CRect( int l, int t, int r, int b ); CRect( const RECT,CRect的常用操作(1),CRect的常用操作(2),CRect的常用操作(3),7.1.4. 颜色和颜色

9、对话框,一个彩色象素的显示需要颜色空间的支持,常用的颜色空间有RGB和YUV两种。RGB颜色空间选用红(R)、绿(G)、蓝(B)三种基色分量,通过对这三种基色不同比例的混合,可以得到不同的彩色效果。而YUV颜色空间是将一个彩色像素表示成一个亮度分量(Y)和两个色度分量(U、V)。 在MFC中,CDC使用的是RGB颜色空间,其中,COLORREF是用来表示RGB颜色的一个32位的数据类型。它可以用下列的十六进制表示一个RGB值:0 x00bbggrr,其中bb、gg、rr分别表示蓝、绿、红3个颜色分量的十六进制值。,7.1.4. 颜色和颜色对话框,在具体操作RGB颜色时,可使用下列的宏操作: G

10、etBValue、GetGValue、GetRValue来获得其中各个颜色分量值。 如:int nRed=GetBValue(color); RGB来将指定的三个分量值转换成一个32位的RGB颜色值。 如: COLORREF color=RGB(nRed,nGreen,nBlue);,7.1.4. 颜色和颜色对话框,MFC的CColorDialog类为应用程序提供了颜色选择通用对话框,构造函数如下: CColorDialog(COLORREF clrInit=0,DWORD dwFlags=0,CWnd * pParentWnd=NULL); 其中,clrInit指定选择的默认颜色值,默认为R

11、GB(0,0,0)黑色。pParentWnd指定对话框的父窗口指针。dwFlags指定对话框外观和功能(见教材P209)。 当对话框单击OK退出时,可调用下列成员函数获得相应的颜色。 COLORREF GetColor() const; void SetCurrentColor(COLORREF clr); static COLORREF * GetSavedCustomColors(),7.1.5. 图形设备接口,Windows为设备环境提供了各种各样的绘图工具,例如用于画线的“画笔”、填充区域的“画刷”以及用于绘制文本的“字体”。 MFC封装了这些工具,并提供相应的类来作为应用程序的图形设

12、备接口GDI(这些类有一个共同的抽象基类CGdiObject)。,7.1.5. 图形设备接口,在选择GDI对象进行绘图时,可遵循下列步骤: 在堆栈中定义一个GDI对象(如CPen对象),然后用相应的函数(如CreatePen)创建此GDI对象,有些对象可用带参的构造函数一步创建完成。 将构造的GDI对象选入当前设备环境中,同时将原来的GDI对象保存起来。 绘图结束后,恢复当前设备环境中原来的GDI对象。 程序结束后,框架会自动删除程序创建的GDI对象。,7.1.5. 图形设备接口,void C*View:OnDraw(CDC* pDC) CPen penBlack; /创建对象 penBlac

13、k.CreatePen(PS_SOLID,2,RGB(0,0,0); CPen *pOldPen=pDC-SelectObject( ,7.1.5. 图形设备接口,除了自定义的GDI对象外,还可使用CDC的成员函数SelectStockObject将Windows预定义的库存GDI对象选入当前设备环境中,并返回原先被选中的对象指针,同时使原先被选中的对象从设备环境中分离出来。 可被选中的库存GDI对象类型: BLACK_BRUSH GRAY_BRUSH LTGRAY_BRUSH DKGRAY_BRUSH HOLLOW_BRUSH NULL_BRUSH WHITE_BRUSH BLACK_PEN

14、 WHITE_PEN NULL_PEN SYSTEM_FONT DEVICE_DEFAULT_FONT,7.2 简单图形绘制,2,7.2.1. 画 笔,画笔是Windows应用程序中用来绘制各种直线和曲线的一种图形工具,它可分为修饰画笔和几何画笔两种类型。 几何画笔通常在逻辑单元中绘图并受当前绘图模式的影响。修饰画笔通常在设备单元中绘图而忽略当前绘图模式。 在这两种类型中,几何画笔的定义最复杂,它不但有修饰画笔的属性,而且还跟画刷的样式、阴影线类型有关,通常用在对绘图有较高要求的场合。而修饰画笔只有简单的几种属性,通常用在简单的直线和曲线等场合。,7.2.1. 画 笔,一个修饰画笔通常具有宽度

15、、风格和颜色三种属性。画笔的宽度用来确定所画的线条宽度,它是用设备单位表示的。默认的画笔宽度是一个像素单位。画笔的颜色确定了所画的线条颜色。画笔的风格确定了所绘图形的线型,它通常有实线(PS_SOLID)、虚线(PS_DASH)、点线(PS_DOT)、点划线(PS_DASHDOT)、双点划线(PS_DASHDOTDOT)、不可见线(PS_NULL)和内框线(PS_INSIDEFRAME)等七种风格。,1. 创建画笔,CPen类封装图形设备接口GDI画笔对象的功能。创建画笔可以采用以下几种方法: (1)使用无参构造函数声明对象,之后调用成员函数CreatePen()创建具体的画笔。 BOOL C

16、reatePen(int nPenStyle, int nWidth, COLORREF crColor); 其中nPenStyle表示画笔的样式。nWidth表示画笔的线宽。crColor表示画笔的RGB颜色。 例如: CPen Pen; Pen.CreatePen(PS_SOLID,1,RGB(255,0,0); /调用成员函数,创建线宽为1的红色实线画笔,1. 创建画笔,(2) 使用构造函数创建画笔 CPen(int nPenStyle,int nWidth,COLORREF cfColor) 例如: CPen Pen(PS_SOLID,1,RGB(255,0,0); / 调用构造函数,创建线宽为1的红色实线画笔 (3) 使用重载的构造函数创建几何画笔 CPen(int nPenStyle,int nWidth, const LOGBRUSH*pLogBrush, int nStyleCount=0, const DWORD *lpstyle=NULL);,2. 库存画笔,库存画笔又叫堆画笔。Windows定义了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号