




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章文本和字体、内容提要、设置文本的设备环境文本的输出过程文本操作示例、5.1 .设置文本的设备环境、1 .相关的基本概念、Windows中显示的所有内容,在某种意义上都可以视为利用GDI的图形实体文本输出使用预定义的特殊图形元素字体集。 字体表示显示的文本的大小、类型和轮廓。 Windows系统提供了7种基本字体,用户可以创建新字体。 文本操作要点:设置获取文本句柄的字体、字符大小、字符颜色等属性,并在设备环境中选择这些属性。 2.Windows提供的7种基本字体ANSI_FIXEDANSI标准的固定宽度字体ANSI_VARANSI标准的可变宽度字体DEFAULT_GUI当前GUI的默认字体OEM_FIXED是, 标准OEM制造商提供的DEVICE_DEFAULT当前图形设备的字体提供SYSTEM_FIXEDWindows的标准固定宽度的字体SYSTEMWindows提供的可变宽度的字体是, 始终作为默认字体Win使用,3 .选择系统字体的步骤,(1)字体句柄变量:定义hfont HF/HF是字体的句柄(2)调用函数GetStockObject是移位的系统默认字体返回hF=getstockobject () (3)调用函数SelectObject为设备环境SelectObject(hdc,HF )选择字体.4 .创建自定义字体,函数cre HFont=CreateFont(intnHeight,/字体高度,0采用系统的默认值,使用逻辑单位intnWidth,/字体宽度,0表示最佳宽高比的值intnEscapement, 每/行文本相对于页面下方的角度,单位为0.1度intnOrientation,/每行文本相对于页面下方的角度单位为0.1度nWeight,/字体的粗细,值的范围为01000DWORDDwltalic, /字体倾斜时为DWORDdwUnderline,/带下划线时为DWORDdwStrikeout,/带删除线时为0,DWORDdwCharset /字体所属的字符集dworddwoutprecision,/输出精度, 默认值out _ default _ precisdworddwclipprecision,/剪裁精度,默认值clip _ default _ precisdwordwquality,/输出质量默认值default _ qualitydw /字体斜率和字体系列,默认值defaul _ pitchdwordlpszfcacename/字体名称; 可选的系统字符集: ansi _ charset OEM _ charset symbol _ charset default _ charset shift jis _ charset,crColor是设定的颜色,字体和背景色,字体颜色函数: se 背景色函数的设定: SetBkColor(hdc,crColor ),5.2 .文本的输出过程,1 .文本的输出步骤,获取字体信息确定格式化的文本,换行时调用文本坐标调用函数输出文本,2 .获取字体信息后输出文本调用GetTextMetrics ()字体信息GetTextMetrics(hdc,/字符高度LONGtmAscent; /文字基线以上的高度LONGtmDescent; /字符基线以下的高度LONGtmInternalLeading; tmHeight的值中包含的垂直大小通常被几个大写的注音符号占据。长周期性地读取; /行间的间隔LONGtmAveCharWidth; /平均文字宽度LONGtmMaxCharWidth; /最大字符宽度LONGtmWeight; /文字的粗细LONGtmOverhang; /添加到复合字体之间的宽度LONGtmDigitizedAspectX; /为输出设备设计的x轴尺寸LONGtmDigitizedAspectY; /为输出设备设计的y轴尺寸BCHARtmFirstChar; /字体的第一个字符值BCHARtmLastChar; /字体的最后一个字符值BCHARtmDefaultChar; /代替字体中没有的字符BCHARtmBreakChar,作为/分隔符的BYTEtmItalic; /0以外为斜体的bytetionmundlined; /0以外表示带下划线的bytetmstruckout/0以外表示带删除线的BYTEtmPitchAndFamily字体间隔和字体系列BYTEtmCharSet; /字符集TEXTMETRIC,bolgettextextendntpoint 32 (hdcdc,LPCTSTRlpszString,/指定字符串intnLength,/字符串中的字符数LPSIZElpSize/是加上字符串宽度和高度的SIZE SIZE数据结构的定义typedefstructtagsize 长CX; 龙珠; SIZE; 3 .格式化文本,确定后续文本坐标,以由函数GetTextExtentPoint32获取当前字符串的宽度,并将该宽度与SIZE共存。 并确保换行时文本坐标指向tm的TEXTMETRICS结构具有字符高度tmHeight行间隔tmExternalLeading。 对于换行符,新行中文本的y坐标的增量值为cy=TM.tmheighttm.tmexternalillading;3 .文本输出,常用的文本输出函数TextOut,原型是BOOLTextOut(HDChdc、intX、intY、/字符串的开始坐标LPCTSTRlpstring,/显示的字符串intnCount/字符串的字节数); 字符串长度获取intlstrlen(LPCTSTRlpString ),数字转换字符串,char itoa (长值,char*str,int radix )值转换的值(整数) str结果字符串radix数字基础(2-36)itoa(50,buf,10) intsprintf(char*buffer,const char *格式,argument ); 包含stdio.hs打印(buf, (%d,%d)n ,x,y );5.3 .文本操作示例【例5-1】在用户窗口中输出几行字符串,每次窗口接收到WM_PAINT消息时显示的文本都会更新。# include # includelongwinapiwndproc (hwnd hwnd,UINTiMessage,UINTwParam,long lparam ) bolinitwingdowsclass (hinstance h ,/主函数intwinapiwinmain (hinstance hinstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,int ncmdshow ) msg消息; PS (! initwindows类(hinstance ) )返回假; PS (! InitWindows(hInstance,ncmdshow ) )返回假; while(GetMessage(,/消息处理函数longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)staticlongnXChar,nCaps,ny c HDChDC; /定义设备上下文的句柄shortx的TEXTMETRICtm; shortLnCount=6; PAINTSTRUCTPtStr; /包含绘图信息的结构变量static char * text buf = thisisthefrstline , Thisisthesecondline , thisisthefourthline , Thisisthefifthline , Thisisthefifthline , this 输出的文本内容、交换机(imessage )/处理消息caseWM_CREATE:/处理窗口创建消息hDC=GetDC(hWnd ); /当前设备表句柄GetTextMetrics(hDC,、bolintwindosclass (hinstance hinstance ) /初始化窗口类WNDCLASSWndClass; wndclass.style=cs _ Hg redraw|cs _ VC redraw; returnRegisterClass(、bolinitwindos (hinstance hinstance,intnCmdShow)/初始化窗口HWNDhWnd; hWnd=CreateWindow(WinText ,/生成窗口文本显示示例程序、WS_OVERLAPPEDWINDOW, NULL; PK (! hwnd )返回假; hWndMain=hWnd; 显示显示窗口(hwnd,nCmdShow) /窗口更新窗口(hwnd )的返回真; 本程序为了说明在窗口的用户区域中将文本格式化后输出的方法,在窗口内各显示5行文本。、26、# include # includelresultcallbackwndpro (hwnd,UINT PS PS S; WNDCLASSwndclass; charlpszClassName=文本输出; charlpsztitle = exampleforthetextoutput ; wndclass.style=0; wndclass.lpsz类name=lpsz类name; PS (! 注册类(,lresultcallbackwndproc (hwnd hwnd,UINTmessage,WPARAMwParam,lparamram)hdcdc; HFONThF_black,hF_big;/定义两种字体句柄PAINTSTRUCTps的TEXTMETRICtm; 定义TEXTMETRIC结构,字体信息charlpsz_1=“这是红色,字体表示SYSTEM_FONT的文字,红色表示未来”=“现在显示的是自定义字体,颜色是绿色,绿色是活的; charlpsz_4=“现在的字体很大,是斜体带下划线的文字”charlpsz_4=“现在掌握字体的操作了吗? “ charlpsz_6=“祝你成功! ”、intX=0、Y=0; SIZEsize; SIZE类型的结构hF_black=CreateFont/创建自定义字体“粗体”(20,/字体高度为0,/最佳宽高比宽度为0,/文本斜率为0,水平0,/字体斜率为0FW_HEAVY,/字体/无下划线0/无删除线ANSI_CHARSET,/ansi_charset字符集OUT_DEFAULT_PRECIS,/输出精度为默认精度CLIP_DEFAULT_PRECIS,/裁剪精度为默认精度default _ q /输出质量为默认值DEFAULT_PITCH|FF_DONTCARE,/字符间隔和字体系列为默认值“粗体”/字体名称; hF_big=CreateFont/新字体“大写”(30,/字体高度0,0,0,FW_NORMAL,1,/斜体1,/下划线0,ANSI_CHARSET,/要使用的字符集out _ default _ pre 交换机(消息) case WM _ paint : hdc=beginpaint (hwnd,/输出文本3,X=0; /计算下一行的起始坐标y=YTM.TM height 20 * TM.tmexternalillading的选择对象(hdc,hF_big) /自定义字体hF_bigSetTextColor(hdc,RGB (155 ) /成套文本的颜色为灰色y=YTM.TM height 20 * TM.tmexternalillading; 增加/Y坐标,生成文本(hdc,x,y,lpsz_4,strlen(lpsz_4) ); /输出文本4SetTextColor(hdc,RGB (255,0,0 ) ); /将文本颜色设为红色x=0/下一行的坐标y=YTM.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能交通行业智能交通系统建设与交通拥堵研究报告
- 2025年人力资源行业人力资源管理与员工培训研究报告
- 2025年数字货币行业数字货币市场发展趋势分析报告
- 2025年环保新材料行业绿色技术创新案例研究报告
- 2025年零售行业智能商店技术应用研究报告
- 2025年助产学产前产后护理常规操作模拟检测题答案及解析
- 2025下半年杭州市第三人民医院公开招聘编外工作人员5人笔试模拟试题及答案解析
- 2025广东汕尾陆河县高校毕业生就业见习招募10人(第六批)笔试备考题库及答案解析
- 2025年皮肤科湿疹类型鉴别诊断模拟考试答案及解析
- 2025年微生物学常见病原体染色鉴定实验模拟试卷答案及解析
- 石棉矿域生态修复法
- 儿童入园(所)健康检查表
- (正式版)JBT 14581-2024 阀门用弹簧蓄能密封圈
- 幼儿园-消毒工作流程图
- 电缆修理工安全生产责任制
- 拼音拼读音节带声调完全版
- 2024被动式超低能耗(居住)绿色建筑节能设计标准
- 某桥梁箱涵、箱通工程监理细则
- 中铝中州矿业有限公司禹州市方山铝土矿矿山地质环境保护和土地复垦方案
- 【教案】圆锥曲线光学性质的数学原理及应用教学设计人教A版(2019)选择性必修第一册
- 2021年12月12日河北省直机关遴选公务员笔试真题及答案解析
评论
0/150
提交评论