版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管理工具 培训课件模板
- 课件小精灵图
- 造林安全培训内容课件
- 绿色企业责任营销
- 第二十二单元 殖民地人民的反抗与资本主义制度的扩展
- 造价专业知识课件
- 校园春季安全教育课件
- 课件对比性原则
- 春节安全培训结束语课件
- 春节后工厂安全管理培训课件
- 2026年辽宁省沈阳市单招职业倾向性测试题库及参考答案详解一套
- 冶金原理李洪桂课件
- 2025年南京市导游综合知识问答题库及答案
- 2026《初中英语•优翼学练优》八上早读本
- 公益慈善组织财务管理制度
- 电力抢修-施工方案
- 征兵心理素质测评适应能力测试题及标准答案
- 2026中国叶黄素酯行业数字化转型与智能化发展研究报告
- 钢结构厂房屋面防水施工质量控制方案
- 期刊编辑角色分析
- 铁塔搬迁施工方案
评论
0/150
提交评论