文字和图形处理技术

上传人:宝路 文档编号:49280409 上传时间:2018-07-26 格式:PPT 页数:67 大小:3.10MB
返回 下载 相关 举报
文字和图形处理技术_第1页
第1页 / 共67页
文字和图形处理技术_第2页
第2页 / 共67页
文字和图形处理技术_第3页
第3页 / 共67页
文字和图形处理技术_第4页
第4页 / 共67页
文字和图形处理技术_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《文字和图形处理技术》由会员分享,可在线阅读,更多相关《文字和图形处理技术(67页珍藏版)》请在金锄头文库上搜索。

1、第 9 章 文字和图形处理技术【学习目标 】 与其他许多编程工具相比,Visual C+在图 形、图像的处理方面更胜一筹。 了解GDI对象和设备上下文 掌握各种样式文本的输出 掌握各种图形的绘制 掌握对图形进行颜色填充 掌握图像的绘制 掌握图像在窗口中的一些操作【学习导航 】 【知识框架 】 本章目录n9.1 GDI概述n9.2 设备上下文介绍n9.3 GDI对象 n9.4 文本输出n9.5 绘制图形n9.6 绘制图像n9.7 课后习题9.1 GDI概述以往许多MSDOS程序采用直接向视频存储区或打印机端口输送 数据,这种做法不利之处是需要各种显示卡(低分辨率彩色图 形显示卡、加强图形显示卡以

2、及图像图形阵)或打印机驱动程 序,支持所有这些设备意味着要用大量的编程来包含这些驱动 程序(为每一个设备编写不同的代码)。为了减轻开发程序的 难度,Windows提供了一个抽象的接口,图形设备接口Graphics Device Interface(GDI)。另外,Windows还提供了各种显示 卡及打印机的驱动程序,这样在写程序时就可以不必关心显示 卡和打印机的类型,简化了程序开发的难度。其实,GDI是微软 公司提供的一组绘图函数,通常称之为GDI函数。使用这些函数 可以绘制各种图形。本章将介绍有关GDI的相关知识。 9.2 设备上下文介绍设备上下文的英文全称是Device Context,简

3、称为DC。设 备上下文是用来绘制图形的逻辑设备,编程人员可以在该设备 上绘制直线、曲线和立方体等各式各样的几何图案及在设备上 输出文字。在开发应用程序时往往要在输出设备上输出程序的 运行结果。输出设备通常指的是显示器和打印机,但程序员需 要了解显示器和打印机的特性才能将结果显示在输出设备上, 而了解显示器和打印机特性这个过程会花去程序员的大部分时 间,为减少开发应用程序的开发时间及开发难度,就提出设备 上下文这个概念。通过使用设备上下文,编程人员可以不必关 心输出设备的具体特性,直接绘制最终的结果,而余下的工作 都交给系统来完成。 在Windows应用程序中,每个窗口都关联有设备上下文,用户只

4、 要获得了窗口的设备上下文,就可以在窗口中绘制各种文本、 图形图像等信息了。9.2 设备上下文介绍例如:void CDrawDlgDlg:OnPaint() HDC hDC;hDC = GetDC()-m_hDC;char data = “明日科技有限公司!“;TextOut(hDC,60,30,data,strlen(data);/代码省略在向设备上下文中输出文本时,文本将显示在对话框中,如图。9.3 GDI对象为了方便用户在设备上下文中绘制信息,Windows提供了6 个GDI对象,分别为画笔CPen、画刷CBrush、字体CFont、位图 CBitmap、调色板CPallette和区域C

5、Rgn。 CPen CPen类封装了Windows的画笔对象。画笔对象主要用于绘制线条,通过画笔对象,可以设置绘制线条的宽 度、颜色、风格等信息。CPen类的主要方法如下。 1CreatePen方法 CreatePen方法用于动态创建一个画笔对象。 语法: BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor ); BOOL CreatePen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpSt

6、yle = NULL ); CreatePen方法参数说明如表9-1所示。参 数 名 称参 数 说 明nPenStyle表示画笔样式,可选值如表9-2所示nWidth表示画笔的宽度crColor表示画笔的颜色pLogBrush表示LOGBRUSH结构指针nStyleCount表示lpStyle参数的长度。如果nPenStyle不为PS_USERSTYLE ,该参数必须为0lpStyle表示用户定义的画笔风格。如果nPenStyle不为 PS_USERSTYLE,该参数必须为NULL9.3 GDI对象参 数 值参数值描述PS_SOLID用于绘制实线PS_DASH用于绘制虚线PS_DOT用于绘制点

7、线PS_DASHDOT用于绘制虚线和点线交替的直线PS_DASHDOTDOT用于绘制一虚线和两点交替的直线PS_NULL不可见画线PS_INSIDEFRAME实线画笔,用来压缩图表使之适合有界矩形PS_GEOMETRIC创建一支几何画笔PS_COSMETIC创建一支装饰画笔PS_ALTERNATE创建一支交替设置像素的画笔PS_USERSTYLE创建一支使用用户提供的风格数组的画笔PS_ENDCAP_ROUND尾帽是圆的PS_ENDCAP_SQUARE尾帽是方的PS_ENDCAP_FLAT尾帽是平面的PS_JOIN_BEVEL连接是斜截式的PS_JOIN_MITER在SetMiterLimit

8、()函数设置的当前设置下,连接是斜接式,否则斜截式PS_JOIN_ROUND连接是圆的9.3 GDI对象void CDrawDlg1Dlg:OnPaint() HDC hDC;hDC = GetDC()-m_hDC;CPen pen;/创建一个红色的宽度为2的画笔pen.CreatePen(PS_SOLID,2,RGB(255,0,0);/选中画笔SelectObject(hDC,pen);CRect rc(80,30,200,80);/利用画笔绘制矩形Rectangle(hDC,80,30,200,80);/代码省略 下面利用CreatePen方法创建了一个画笔对象,并且利用该画笔绘制了一个

9、矩形。9.3 GDI对象2CreatePenIndirect方法 CreatePenIndirect方法根据LOGPEN结构信息直接创建画笔。 语法: BOOL CreatePenIndirect( LPLOGPEN lpLogPen ); lpLogPen:表示LOGPEN结构指针,该结构描述了画笔的宽度、风格和颜色信息。CBrush画刷用来填充诸如多边形、椭圆和路径等图形内部的位图形式的像素。例如,在绘制一个矩形时,需要在矩 形内部填充颜色或位图等,这需要使用画刷对象。CBrush的主要方法如下。 1CreateSolidBrush方法 CreateSolidBrush方法用指定的颜色创建

10、画刷。 语法: BOOL CreateSolidBrush( COLORREF crColor ); crColor:表示画刷的颜色。9.3 GDI对象下面利用CreateSolidBrush方法创建一个蓝色的画刷,并将其填充在 矩形中。例如:填充矩形的程序设计步骤如下。void CDrawDlg2Dlg:OnPaint() CDC* pDC = GetDC(); /获取对话框的设备上下文指针CBrush brush;/定义画刷对象brush.CreateSolidBrush(RGB(0,0,255); /创建蓝色的画刷pDC-SelectObject( /选中画刷CRect rc(80,30

11、,200,80);pDC-FillRect(rc, /利用画刷绘制矩形pDC-DeleteDC();/代码省略9.3 GDI对象2CreateHatchBrush方法 CreateHatchBrush方法用于创建阴影画刷。 语法: BOOL CreateHatchBrush( int nIndex, COLORREF crColor );nIndex:表示画刷的阴影风格,可选值如表9-3所示。 参 数 值参数值描述HS_BDIAGONAL 45的向下影线,从左到右HS_CROSS水平和垂直方向以网格线做出阴影HS_DIAGCROSS45的网格线阴影HS_FDIAGONAL45的向上阴影线,从左

12、到右HS_HORIZONTAL水平的阴影线HS_VER TICAL垂直的阴影线9.3 GDI对象3CreateBrushIndirect方法 CreateBrushIndirect方法使用LOGBRUSH结构信息直接创建画刷。 语法: BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush ); lpLogBrush:表示LOGBRUSH结构指针,LOGBRUSH结构描述了画刷的风格、颜色和虚线等信息。 4CreatePatternBrush方法 CreatePatternBrush方法用于创建一个位图画刷。利用位图画刷,用户可以将位图填充到一

13、个区域中。 语法: BOOL CreatePatternBrush( CBitmap* pBitmap ); pBitmap:表示一个位图对象指针。下面利用CreatePatternBrush方法创建一个位图画刷,并将其填 充到对话框的客户区域中。例如:void CDrawDlg3Dlg:OnPaint()CDC* pDC = GetDC(); /获取对话框的设备上下文指针CBrush brush; /定义画刷对象CBitmap bmp; /定义一个位图bmp.LoadBitmap(IDB_BITBRUSH);brush.CreatePatternBrush(pDC-SelectObject(

14、 /选中画笔CRect rc;GetClientRect(rc);/获取窗口的客户区域pDC-FillRect(rc,/利用画笔绘制矩形pDC-DeleteDC();/代码省略 9.3 GDI对象5CreateDIBPatternBrush方法 CreateDIBPatternBrush方法利用设备无关位图的调色板创建画刷。 语法: BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage ); BOOL CreateDIBPatternBrush( const void* lpPackedDIB, UINT nUsage ); h

15、PackedDIB:包含一个全局内存对象,用于标识设备无关位图信息。 lpPackedDIB:表示设备无关位图信息,通常为BITMAPINFO结构指针。 nUsage:表示BITMAPINFO结构中的bmiColors成员是否表示RGB值。可选值如表9-4所示。 参 数 值参数值描述DIB_PAL_COLORS颜色表由16位的索引数组构成DIB_RGB_COLORS颜色表中包含字母方式的颜色值DIB_PAL_INDICES只在第2个版本的方法中可用,表示没有颜色表9.3 GDI对象6CreateSysColorBrush方法 CreateSysColorBrush方法创建系统预定义的颜色画刷。

16、 语法: BOOL CreateSysColorBrush( int nIndex ); nIndex:表示画刷的阴影风格,可选值如表9-3所示。 CFont 字体是一种具有某种风格和尺寸的所有字符的完整集合,它常常被当作资源存于磁盘中,其中有一些字体还 依赖于某种设备。MFC提供了CFont类用于封装字体对象,该类的主要方法如下。 1CreateFontIndirect方法 CreateFontIndirect方法利用LOGFONT结构信息直接创建字体对象。 语法: BOOL CreateFontIndirect(const LOGFONT* lpLogFont ); lpLogFont:表示LOGFONT结构指针,LOGFONT结构中描述了字体的高度、宽度、字符集、下划线、字体 名称等信息,定义如下: typedef struct tagLOGFONT LONG lfHeight; /字体高度LONG lfWidth;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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