第4讲边框窗口、与视文本、字体、图形输出课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4讲边框窗口、与视文本、字体、图形输出课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 边框 窗口 文本 字体 图形 输出 课件
- 资源描述:
-
1、4.1.1 基本的文本输出基本的文本输出 基本的文本或图形的输出要通过DC设备环境进行。VC中CDC类是定义设备环境的基类,它封装了170多个成员函数,包括文本输出函数和绘图函数。另外CDC还派生了CClientDC、CWindowDC、CPaintDC、CMetaFileDC等类,以满足不同的用途需要。CDC在一个定义的函数中输出文本或绘图三个步骤:1、调用文本输出或绘图函数之前,先获取设备环境对象;常用函数:CWnd:GetDC()格式:CDC *GetDC();功能:获取当前窗口的设备环境对象的指针。典型用法:CDC*pDC=GetDC();/获取当前窗口的设备环境对象指针。注:OnDr
2、aw函数忽略此步,因为它已由AppWizard自动生成了这个部分,并把对象地址传递给了该函数的pDC对象指针形参。2、调用文本输出或绘图函数时,要正确地引用设备环境;如要在客户区的(100,100)位置输出字符串“马到成功!”的典型代码如下:pDC-TextOut(100,100,”马到成功!”);常用的文本输出函数:CDC:TextOut格式:virtual BOOL TextOut(int x,int y,LPCTSTR lpszString,int nCount);BOOL TextOut(int x,int y,const CString&str);功能:用所选字体在指定位置输出字符串
3、,原点在字符单元左上角。返回:若函数调用成功,返回真,否则返回假。3、释放设备环境常用函数:CWnd:ReleaseDC()格式:int ReleaseDC(CDC*pDC);功能:释放设备环境。返回:若调用成功,则返回非0,否则返回0。参数:pDC-指向要释放的设备环境对象 设备环境使用完毕立即释放是一个良好的编程习惯,首先因为CDC类对象占用庞大的内存;其次在同一时刻Windows中最多可以有5个显示设备环境可用,所有的应用程序不得不共享这一宝贵资源。在另一个函数中输出文本或绘图同样要遵循以上三步。4.1.2 设置文本颜色及背景颜色设置文本颜色及背景颜色 1、设置文本颜色设置文本颜色文本颜
4、色是指输出字体的颜色。VC定义了表示颜色的数据类型COLORREF。可以通过调用RGB宏命令,对其参数赋值来获得不同的颜色。CDC:SetTextColor成员函数用于设置文本本身的颜色,该函数说明如下:格式:virtual COLORREF SetTextColor(COLORREF crColor);功能:设置当前文本颜色。返回:先前文本的RGB颜色值。参数:crColor-指定当前文本的RGB颜色值SetTextColor使用举例举例:用MFC AppWizard(exe)工程创建一SDI MFC Windows应用程序。要求-当在客户区单击MOUSE时,用黄色在(100,100)处显示
5、“马到成功!”字符串。程序片断如下:/CDC*pDC=GetDC();/获取当前窗口设备环境的指针 CString str=马到成功!;COLORREF rColor,oColor;rColor=RGB(255,255,0);/黄色 oColor=pDC-SetTextColor(rColor);/保存原来的文本颜色,并当前文本设置为黄色 pDC-TextOut(100,100,str);/显示文本 pDC-SetTextColor(oColor);/恢复原来的文本颜色 ReleaseDC(pDC);/释放设备环境 /本例完整程序见CH4D工程。2、设置文本背景颜色设置文本背景颜色文本在屏幕上
6、输出要占据一定的区域,这个区域用包含文本的矩形区域来定义。在这个区域内除去文本本身的笔划占据的部分以外的其它空隙部分就是文本的背景。文本背景颜色是指用来填充文本输出区域内空隙部分的颜色。文本背景模式是指文本背景颜色填充文本背景的方式。CDC:SetBkColor成员函数用于设置文本的背景颜色,该函数说明如下:格式:virtual COLORREF SetBkColor(COLORREF crColor);功能:设置当前文本背景颜色。返回:先前文本的背景颜色值。参数:crColor-指定当前文本背景颜色值CDC:SetBkMode成员函数用于设置文本背景模式,该函数说明如下:格式:int Set
7、BkMode(int nBkMode);功能:设置当前背景模式。返回:先前的背景模式。参数:nBkMode-指定当前的背景模式 它有两个取值:OPAQUE-不透明(缺省时为该值)显示时,背景用当前背景色TRANSPARENT-透明 显示时,不改变背景色(调用SetBkColor函数无效)SetBkColor使用举例举例:用MFC AppWizard(exe)工程创建一SDI MFC Windows应用程序。要求-当在客户区单击MOUSE时,用黄色在(100,100)处显示“马到成功!”字符串,字符串背景用红色显示。程序片断如下:/CDC*pDC=GetDC();CString str=马到成功
8、!;int nBkMode;COLORREF rColor,oColor;rColor=RGB(255,255,0);/黄色oColor=pDC-SetTextColor(rColor);nBkMode=pDC-SetBkMode(OPAQUE);/保存原来的背景模式,并且当前背景设置为不透明 pDC-SetBkColor(RGB(255,0,0);/设置当前背景颜色为红色 pDC-TextOut(100,100,str);/显示文本 pDC-SetTextColor(oColor);/恢复原来的文本颜色 pDC-SetBkMode(nBkMode);/恢复原来的背景模式 ReleaseDC(
9、pDC);/释放设备环境 4.2.1 字体的基本知识字体的基本知识 一、关于字体的术语一、关于字体的术语1、字模字模(typeface):指基本的字符设计,它由笔划宽度(stroke width)及衬线(serif)决定。注:衬线(印serif)指主笔划结尾时的细线,如字母“H”的上下四条短而细的横线。有些字体不带衬线(sans serif)。sans-prep.无。2、字体字体(font):具有相同字模和尺寸的完整字符集。字体尺寸用来指定字符所占区域的大小,可以用mm、inch或“点”来 衡 量。点 是 印 刷 中 采 用 的 最 小 度 量 单 位(1 英 寸=72dots=25.4mm)
10、。目前有四种基本类型的字体四种基本类型的字体:光栅字体/点阵字体(raster font)每个字符均以固定图形形式存储在字库中,它是与设备相关的字体。矢量字体/向量字体(Vector font)是把字符分解为一系列直线段而存储起来。TrueType字体 字符的原型是一系列直线和曲线绘制命令的集合。它是一种所见即所得的字体。OpenType字体 它不但可以定义TrueType字体,还可以定义手写字体。矢量字体、TrueType字体、OpenType字体是与设备无关的字体。3、字体属性:字体属性:有许多属性,主要有字样、风格和尺寸三种。字样是字符书写和显示时表现出的特定模式,如汉字有宋体、楷体、仿
11、宋、黑体、隶书、幼圆等多种字样。字体风格主要表现字体的粗细和是否倾斜等特点。字体尺寸用来指定字符所占区域的大小,可以用mm、inch或“点”来衡量。对于汉字,还用“号”数表示字体的尺寸,字号越大,字体尺寸越小(如:五号字的尺寸比四号字的尺寸要小)。二、二、TEXTMETRIC结构结构Windows很多字体的功能都是以TEXTMETRIC结构定义的,该结构定义中的成员可以较准确地描述字体的各种属性。如果需要更精确地对字体高度和宽度进行计算就需要使用CDC:GetTextMetrics(LPTEXTMETRIC lpMetrics)成员函数,该函数将会填充TEXTMETRIC结构。TEXTMETR
12、IC结构定义:typedef struct tagTEXTMETRIC short int tmHeight;/高度 short int tmAscent;/上升高度 short int tmDescent;/下降高度 short int tmInternalLeading;/字符单元内部插入 short int tmExternalLeading;/字符单元外部插入 short int tmAveCharWidth;/平均字符宽度 short int tmMaxCharWidth;/最大字符宽度 short int tmWeight;/字体权重 short int tmOverhang;/延
13、伸量 short int tmDigitizedAspectX;/设备水平特性 short int tmDigitizedAspectY;/设备垂直特性 BYTE tmFirstChar;/第一个字符 BYTE tmLastChar;/最后一个字符 BYTE tmDefaultChar;/缺省字符 BYTE tmBreakChar;/中断字符 BYTE tmItalic;/斜体 BYTE tmUnderlined;/下划线 BYTE tmStruckOut;/删除线 BYTE tmPitchAndFamily;/字体间距和字体类型 BYTE tmCharSet;/字符集TEXTMETRIC;该
14、结构常用成员有:tmHeight、tmAscent、tmDescent、tmInternalLeading、tmExternalLeading、tmAveCharWidth等。4.2.2逻辑字体逻辑字体/自定义字体自定义字体程序员可以的创建的字体有两种:库存字体库存字体(标准字体标准字体)和逻辑字体(自定义字体/非库存字体)。逻辑字体逻辑字体是对理想字体的一种描述方式。使用逻辑字体输出文字时,系统自动地将逻辑字体映射为最匹配的系统库存字体。用户可使用CFont:CreateFont或LOGFONT/CFont:CreateFontIndirect创建逻辑字体。CFont类继承关系如下:CObj
15、ect CGdiObject CFont图:CFont类的继承关系CGdiObject图形对象类是各种Windows GDI(图形设备接口类)的基类,Gdi对象类的派生类除了字体外,还包括画笔、画刷、区域、调色板等。CFont(字体类)封装了一组Windows GDI字体,同时提供了一组成员函数处理这些字体。一、创建逻辑字体的结构和函数一、创建逻辑字体的结构和函数1、LOGFONT结构结构LOGFONT结构typedef struct tagLOGFONTLONG lfHeight;/字体高度,等于零为缺省高度LONG lfWidth;/字体平均宽度LONG lfEscapement;/出口矢
16、量与X轴间的角度(0.1度)LONG lfOrientation;/字符基线与X轴间的角度。LONG lfWeight;/字体粗细BYTE lfItalic;/是否为斜体。BYTE lfUnderline;/是否有下划线。BYTE lfStrikeOut;/是否带删除线。BYTE lfCharSet;/指定字符集合BYTE lfOutPrecision;/字符输出精度。BYTE lfClipPrecision;/裁剪精度BYTE lfQuality;/输出质量BYTE lfPitchAndFamily;/字体间距和字体类型BYTE lfFacename;/指定字体的字样名LOGFONT2、CF
17、ont:CreateFont-创建逻辑字体(法法1)格式:BOOL CreateFont(int nHeight,int nWidth,int nEscapement,int nOrientation,int nWeight,BYTE bItalic,BYTE bUnderline,BYTE cStrikeOut,BYTE nCharSet,BYTE nOutPrecision,BYTE nClipPrecision,BYTE nQuality,BYTE nPitchAndFamily,LPCTSTR lpszFacename);功能:创建并初始化一个CFont对象。返回:调用成功,返回非0值
18、。该函的参数和LOGFONT中的各成员有一一对应的关系。本函数适合于字体有多个属性要进行设定的情况。3、CFont:CreateFontIndirect-创建逻辑字体(法法2)使用时首先定义LOGFONT结构的有关成员创建所需的字体,然后调用CFont:CreateFontIndirect产生该字体。CFont:CreateFontIndirect函数说明如下:格式:BOOL CreateFontIndirect(const LOGFONT*lpLogFont);功能:以lpLogFont指向LOGFONT结构中给出的字体属性初始化一个CFont对象。返回:调用成功,返回非0值。参数:lpLo
19、gFont-指向LOGFONT结构的指针。二、使用逻辑字体二、使用逻辑字体1、逻辑字体、逻辑字体创建步骤创建步骤Step 1:用CFont类定义字体对象;Step 2:调用CFont:CreateFont函数(或或LOGFONT/CFont:CreateFontIndirect)建立自定义的逻辑字体;Step 3:调用CDC:SelectObject函数将上一步构造的GDI字体对象选入当前设备环境,并保存原来的GDI字体对象;CDC:SelectObject函数使用格式:格式:virtual CFont*SelectObject(CFont*pFont);功能:将一个字体对象选入当前设备环境,
20、新选字体对象将代替同一类型的先前对象。返回:被代替字体对象的指针。参数:pFont-指向要选择的CFont对象的指针。Step 4:字体使用结束后,恢复当前设备环境原来的GDI字体对象。2、逻辑字体使用举例、逻辑字体使用举例使用CFont:CreateFont创建逻辑字体程序例程序例:程序清单:/CFont MyFont,*OldFont;CString str=马到成功!;pDC-SetTextColor(RGB(0,0,255);MyFont.CreateFont(150,/字体高度,等于零为缺省高度30,/字体平均宽度200,/字符串倾斜20度,出口矢量与X轴间的角度(0.1度)0,/字
21、符基线与X轴间的角度。FW_HEAVY,/字体粗细TRUE,/是否为斜体。TRUE,/是否有下划线。0,/是否带删除线。GB2312_CHARSET,/指定字符集合O U T _ D E F A U L T _ P R E C I S,/字 符 输 出 精 度。CLIP_DEFAULT_PRECIS,/裁剪精度DRAFT_QUALITY,/输出质量FIXED_PITCH,/字体间距和字体类型MyFont“/指定字体的字样名);/创建逻辑字体OldFont=pDC-SelectObject(&MyFont);/将创建的逻辑字体选入当前DC,保存原来的字体pDC-TextOut(0,150,str
22、);pDC-SelectObject(OldFont);/恢复DC中原来的字体三、使用标准字体三、使用标准字体任何语种的Windows都支持六种库存字体/标准字体,它们分别是:SYSTEM_FONT(系统字体)、ANSI_FIXED_FONT(固定系统字体)、ANSI_VAR_FONT(可变系统统)、DEVICE_DEFAULT_FONT(与设备相关字体)、OEM_FIXED_FONT(与OEM相关字体)、SYSTEM_FIXED_FONT(固定宽度的系统字体)。用户可直接选用这些标准字体。可以调用CDC:SelectStockObject成员函数选用标准字体对象,该函数使用说明如下:格式:v
23、irtual CGdiObject*SelectStockObject(int nIndex);功能:选择预定义的库存字体、画笔或画刷所对应的CGdiObject对象。返回:调用成功则返回指向被替换的CGdiObject对象的指针,否则返回NULL。参数:nIndex-指定预定义的对象。nIndex取值可以是下列对象之一:SYSTEM_FONT(系统字体)ANSI_FIXED_FONT(固定系统字体)ANSI_VAR_FONT(可变系统统)DEVICE_DEFAULT_FONT(与设备相关字体)OEM_FIXED_FONT(与OEM相关字体)SYSTEM_FIXED_FONT(固定宽度的系统字
24、体)BLACK_PEN(黑色画笔)NULL_PEN(空画笔)WHITE_PEN(白色画笔)BLACK_BRUSH(黑色画刷)DKGRAY_BRUSH(深灰画刷)HOLLOW_BRUSH(中空画刷)LTGRAY_BRUSH(浅灰画刷)NULL_BRUSH(空画刷)WHITE_BRUSH(白色画刷)标准字体使用举例举例:依次调用六种标准字体显示“The road of success!”。程序片段如下:/int nFonts6=SYSTEM_FONT,ANSI_FIXED_FONT,ANSI_VAR_FONT,DEVICE_DEFAULT_FONT,OEM_FIXED_FONT,SYSTEM_FI
25、XED_FONT;CString str=The road of success!;pDC-SetTextColor(RGB(0,0,255);for(int i=0;iSelectStockObject(nFontsi);pDC-TextOut(200,40*(i+2),str);4.3.1基本图形显示基本图形显示用用CDC绘图函数绘制基本图形与前面介绍的用CDC文本函数输出文本的步骤相同(见本章4.2.1节三步曲)。另外CDC还派生了CPaintDC、CClientDC、CWindowDC等类。一、常用绘图函数一、常用绘图函数CDC:SetPixel格式:COLORREF SetPixel
展开阅读全文