第9章 文字与图形处理技术_第1页
第9章 文字与图形处理技术_第2页
第9章 文字与图形处理技术_第3页
第9章 文字与图形处理技术_第4页
第9章 文字与图形处理技术_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章文字与图形处理技术9.1图形设备接口GDI是微软公司提供的一组绘图函数,通常称之为GDI函数。

使用这些函数可以绘制各种图形。9.1.1设备上下文介绍

设备上下文的英文全称是DeviceContext,简称为DC。

设备上下文是用来绘制图形的逻辑设备,编程人员可以在该设备上绘制直线、曲线和立方体等各式各样的几何图案及在设备上输出文字。9.1.2熟悉使用GDI对象1.CPen

CPen类封装了Windows的画笔对象。

画笔对象主要用于绘制线条,通过画笔对象,可以设置绘制线条的宽度、颜色、风格等信息。(1)CreatePen方法

CreatePen方法用于动态创建一个画笔对象。语法:BOOLCreatePen(int

nPenStyle,int

nWidth,COLORREFcrColor);BOOLCreatePen(int

nPenStyle,int

nWidth,constLOGBRUSH*pLogBrush,int

nStyleCount

=0,constDWORD*lpStyle=NULL);(2)CreatePenIndirect方法

CreatePenIndirect方法根据LOGPEN结构信息直接创建画笔。语法:BOOLCreatePenIndirect(LPLOGPENlpLogPen);2.CBrush

CBrush类(画刷)用来填充诸如多边形、椭圆和路径等图形内部的位图形式的像素。(1)CreateSolidBrush方法

CreateSolidBrush方法用指定的颜色创建画刷。语法:BOOLCreateSolidBrush(COLORREFcrColor);(2)CreateHatchBrush方法

CreateHatchBrush方法用于创建阴影画刷。语法:BOOLCreateHatchBrush(int

nIndex,COLORREFcrColor);(3)CreateBrushIndirect方法

CreateBrushIndirect方法使用LOGBRUSH结构信息直接创建画刷。语法:BOOLCreateBrushIndirect(constLOGBRUSH*lpLogBrush);(4)CreatePatternBrush方法

CreatePatternBrush方法用于创建一个位图画刷。语法:BOOLCreatePatternBrush(CBitmap*pBitmap);3.CFont

CFont类(字体)是一种具有某种风格和尺寸的所有字符的完整集合,它常常被当作资源存于磁盘中,其中有一些字体还依赖于某种设备。(1)CreateFontIndirect方法

CreateFontIndirect方法利用LOGFONT结构信息直接创建字体对象。语法:BOOLCreateFontIndirect(constLOGFONT*lpLogFont);(2)CreateFont方法

CreateFont方法用于创建一个字体。语法:BOOLCreateFont(int

nHeight,int

nWidth,int

nEscapement,int

nOrientation,int

nWeight,BYTEbItalic,

BYTEbUnderline,BYTEcStrikeOut,BYTEnCharSet,BYTEnOutPrecision,BYTEnClipPrecision,BYTEnQuality,BYTEnPitchAndFamily,LPCTSTRlpszFacename);(3)CreatePointFont方法

CreatePointFont方法根据字体大小和字体名称创建字体。语法:BOOLCreatePointFont(int

nPointSize,LPCTSTRlpszFaceName,CDC*pDC=NULL);(4)CreatePointFontIndirect方法

CreatePointFontIndirect方法与CreateFontIndirect方法相同,利用LOGFONT结构信息直接创建字体对象。语法:BOOLCreatePointFontIndirect(constLOGFONT*lpLogFont,CDC*pDC=NULL);(1)LoadBitmap方法

LoadBitmap方法用于加载一个位图资源到位图对象上。语法:BOOLLoadBitmap(UINTnIDResource);BOOLLoadBitmap(LPCTSTRlpszResourceName);(2)LoadOEMBitmap方法

LoadOEMBitmap方法用于加载预定义的Windows位图。语法:BOOLLoadOEMBitmap(UINTnIDBitmap);(3)LoadMappedBitmap方法

LoadMappedBitmap方法用于加载位图资源,并且映射位图颜色到当前的系统颜色中。语法:BOOLLoadMappedBitmap(UINTnIDBitmap,UINTnFlags=0,LPCOLORMAPlpColorMap=NULL,int

nMapSize=0);(4)CreateBitmap方法

CreateBitmap方法用于创建一个位图资源。语法:BOOLCreateBitmap(int

nWidth,int

nHeight,UINTnPlanes,UINTnBitcount,constvoid*lpBits);(5)CreateBitmapIndirect方法

CreateBitmapIndirect方法利用BITMAP结构信息直接创建位图。语法:BOOLCreateBitmapIndirect(LPBITMAPlpBitmap);(6)CreateCompatibleBitmap方法

CreateCompatibleBitmap方法用于创建一个与指定设备上下文兼容的位图。语法:BOOLCreateCompatibleBitmap(CDC*pDC,int

nWidth,int

nHeight);(7)CreateDiscardableBitmap方法

CreateDiscardableBitmap方法用于创建一个与指定设备上下文兼容的可废弃的位图。语法:BOOLCreateDiscardableBitmap(CDC*pDC,int

nWidth,int

nHeight);(8)GetBitmap方法

GetBitmap方法用于获取位图信息,将其填充到BITMAP结构中。语法:int

GetBitmap(BITMAP*pBitMap);5.CPalette

CPalette类(调色板)在一个应用程序和一个颜色输出设备之间提供了一个接口,通过这个接口应用程序可以拥有自己的颜色索引,可以提高程序的运行速率及提高应用程序的颜色处理能力。(1)CreatePalette方法

CreatePalette方法用于创建一个调色板资源,并将其关联到调色板对象上。语法:BOOLCreatePalette(LPLOGPALETTElpLogPalette);(2)CreateHalftonePalette方法

CreateHalftonePalette方法用于创建一个半色调调色板。语法:BOOLCreateHalftonePalette(CDC*pDC);(3)AnimatePalette方法

AnimatePalette方法用于替换指定逻辑调色板的入口点。语法:voidAnimatePalette(UINTnStartIndex,UINTnNumEntries,LPPALETTEENTRYlpPaletteColors);(4)GetNearestPaletteIndex方法

GetNearestPaletteIndex方法用于返回与指定颜色接近的调色板入口点索引。语法:UINTGetNearestPaletteIndex(COLORREFcrColor)const;(5)ResizePalette方法

ResizePalette方法用于改变逻辑调色板的大小。语法:BOOLResizePalette(UINTnNumEntries);(6)GetEntryCount方法

GetEntryCount方法用于返回调色板中入口点的数量。语法:int

GetEntryCount();(7)GetPaletteEntries方法

GetPaletteEntries方法用于返回调色板中的一组入口点。语法:UINTGetPaletteEntries(UINTnStartIndex,UINTnNumEntries,LPPALETTEENTRYlpPaletteColors)const;(8)SetPaletteEntries方法

SetPaletteEntries方法用于设置调色板中入口点的RGB颜色值。语法:UINTSetPaletteEntries(UINTnStartIndex,UINTnNumEntries,LPPALETTEENTRYlpPaletteColors);6.CRgnWindows中的区域对象由多边形,椭圆或二者组合形成的一种范围,可以利用它来进行区域的填充、裁剪以及鼠标点的测试。(1)CreateRectRgn方法

CreateRectRgn方法用于创建一个矩形区域。语法:BOOLCreateRectRgn(intx1,inty1,intx2,inty2);(2)CreateRectRgnIndirect方法

CreateRectRgnIndirect方法根据RECT结构信息创建矩形区域。语法:BOOLCreateRectRgnIndirect(LPCRECTlpRect);(3)CreateEllipticRgn方法

CreateEllipticRgn方法用于根据外接矩形创建一个椭圆形区域。语法:BOOLCreateEllipticRgn(intx1,inty1,intx2,inty2);(4)CreatePolygonRgn方法

CreatePolygonRgn方法用于创建一个多边形区域。语法:BOOLCreatePolygonRgn(LPPOINTlpPoints,int

nCount,int

nMode);(5)CreatePolyPolygonRgn方法

CreatePolyPolygonRgn方法用于创建一组封闭的多边形组成的区域。语法:BOOLCreatePolyPolygonRgn(LPPOINTlpPoints,LPINTlpPolyCounts,int

nCount,int

nPolyFillMode);(6)CombineRgn方法

CombineRgn方法用于组合区域。语法:int

CombineRgn(CRgn*pRgn1,CRgn*pRgn2,int

nCombineMode);(7)PtInRegion方法

PtInRegion方法用于判断某个坐标点是否在指定的区域中。语法:BOOLPtInRegion(intx,inty)const;BOOLPtInRegion(POINTpoint)const;9.2文本输出

在MFC中,提供了CDC类对Windows的设备上下文进行封装。9.2.1使用TextOut方法在指定位置输出文本CDC类提供了TextOut方法用于在窗口的指定位置输出文本。语法:virtualBOOLTextOut(intx,inty,LPCTSTRlpszString,int

nCount);BOOLTextOut(intx,inty,constCString&str);9.2.2使用DrawText方法格式化输出文本CDC类提供了DrawText方法用于在指定的区域中输出文本。语法:virtualint

DrawText(LPCTSTRlpszString,int

nCount,LPRECTlpRect,UINTnFormat);int

DrawText(constCString&str,LPRECTlpRect,UINTnFormat);9.3文本属性9.3.1设置文本字体

每一个字符都有其独特的属性,如长、宽、高、字体粗细、下划线等。

为了使用户更加方便地修改这些属性,于是将它们封装在MFC的CFont类中。

CFont类中提供了CreateFont函数使用户可以自定义所需求的字体。语法:BOOLCreateFont(

int

nHeight, //字体高度

int

nWidth, //字体宽度

int

nEscapement, //文本输出的角度

int

nOrientation, //字体的旋转角度

int

nWeight, //字体的笔画粗细

BYTEbItalic, //是否斜体BYTEbUnderline, //是否下划线

BYTEcStrikeOut, //是否带删除线BYTEnCharSet, //字符集BYTEnOutPrecision,//输出精度BYTEnClipPrecision,//剪贴精度BYTEnQuality, //字体的输出质量BYTEnPitchAndFamily, //字体间的间距和家族LPCTSTRlpszFacename);//指定字体名称)

CFont类中除了使用CreateFont函数用于创建字体,还可以使用CreateFontIndirect函数来完成创建字体的任务。

该函数的原型如下:BOOLCreateFontIndirect(constLOGFONT*lpLogFont)9.3.2设置文本对齐方式

调用CDC类成员函数SetTextAlign可以设置文本的对齐方式,调用GetTextAlign可以获取当前的文本对齐方式。语法:UINTSetTextAlign(UINT

nFlags);UINTGetTextAlign()const;9.3.3设置文本颜色

通过调用CDC类成员函数SetTextColor来设置文本的颜色,调用GetTextColor可以获取当前文本的颜色。语法:virtualCOLORREFSetTextColor(COLORREF

crColor);COLOR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论