《字体与文本》PPT课件.ppt

上传人:牧羊曲112 文档编号:5491583 上传时间:2023-07-12 格式:PPT 页数:28 大小:338.49KB
返回 下载 相关 举报
《字体与文本》PPT课件.ppt_第1页
第1页 / 共28页
《字体与文本》PPT课件.ppt_第2页
第2页 / 共28页
《字体与文本》PPT课件.ppt_第3页
第3页 / 共28页
《字体与文本》PPT课件.ppt_第4页
第4页 / 共28页
《字体与文本》PPT课件.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《字体与文本》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《字体与文本》PPT课件.ppt(28页珍藏版)》请在三一办公上搜索。

1、字体与文本,字体设置文本输出程序示例,字体设置,字体描述选用系统提供的字体创建自定义字体,字体描述,有关字体高度的三个常用参数:tmExternalLeadingtmInternalLeadingtmHeight,tmInternalLeading,tmExternalLeading,tmHeight,选用系统提供的字体,定义字体句柄变量HFONThF;获得系统提供的字体句柄:hF=GetStockObject(基本字体);将字体选入设备环境:SelectObject(hdc,hF);,基本字体,ANSI_FIXED_FONTANSI标准的固定宽度字体ANSI_VAR_FONTANSI标准的可

2、变宽度字体DEVICE_DEFAULT_FONTWindows NT/2000 or later:当前图形设备字体DEFAULT_GUI_FONT(graphical user interface)菜单或对话框等用户界面的默认字体OEM_FIXED_FONTOriginal equipment manufacturer(OEM)(原设备制造商)提供的标准字体SYSTEM_FONTWingdows 系统提供的可变宽度默认字体SYSTEM_FIXED_FONTWindows系统提供的固定宽度字体,字体创建,字体创建函数:HFONT CreateFont(参数列表);字体创建函数中的尺寸均采用逻辑单

3、位。,HFONT CreateFont(int nHeight,/字体高度(取0,采用默认值)int nWidth,/平均字符宽度(取0,采用最佳高宽比)int nEscapement,/行角度(单位:1/10度)int nOrientation,/页角度(单位:1/10度)int fnWeight,/字体粗细度,(取值01000)DWORD fdwItalic,/是否倾斜DWORD fdwUnderline,/是否有下划线 DWORD fdwStrikeOut,/是否有中划线 DWORD fdwCharSet,/字体所属字符集 DWORD fdwOutputPrecision,/输出精度 D

4、WORD fdwClipPrecision,/裁减精度 DWORD fdwQuality,/输出质量DWORD fdwPitchAndFamily,/字间距及字体系列 LPCTSTR lpszFace/字体名);,例如:hF=CreateFont/引入新字体(30,/字体高度0,/最佳高宽比0,/行不倾斜0,/字不倾斜FW_NORMAL,/400磅1,/定义斜体1,/定义输出时带下划线0,/无中划线ANSI_CHARSET,/所使用的字符集OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCA

5、RE,/默认间距,/不关心字体系列“新字体”/字体名);SelectObject(hdc,hF);/将字体选入设备环境,设置字体颜色和背景颜色,COLORREF SetTextColor(HDC hdc,COLORREF crColor/文本颜色);COLORREF SetBkColor(HDC hdc,COLORREF crColor/背景颜色值);函数执行成功,返回原先文本或背景颜色,文本输出,文本输出需要解决两个问题:下一个字符的坐标下一行文本的坐标在解决这两个问题前,首先要获取字体信息,获取字体信息函数:GetTextMetrics(hdc,tm);/将当前字体信息写入到一个tm结构体

6、中。Tm为一个TEXTMETRICS结构体,typedef struct tagTEXTMETRIC LONG tmHeight;/字符高度LONG tmAscent;/字符基线以上高度LONG tmDescent;/字符基线以下高度LONG tmInternalLeading;LONG tmExternalLeading;LONG tmAveCharWidth;/平均字符宽度LONG tmMaxCharWidth;/最大字符宽度LONG tmWeight;/字符粗细度LONG tmOverhang;/合成字体间的附加宽度,LONG tmDigitizedAspectX;/为输出设备设计的x轴

7、尺寸LONG tmDigitizedAspectY;/为输出设备设计的y轴尺寸BCHAR tmFirstChar;/字体中第一个字符值BCHAR tmLastChar;/字体中最后一个字符值BCHAR tmDefaultChar;/代替不在字体中字符的字符BCHAR tmBreakChar;/分隔符字符BYTE tmItalic;/是否倾斜BYTE tmUnderlined;/是否有下划线BYTE tmStruckOut;/是否为删除字体BYTE tmPitchAndFamily;/字体间距和字体族BYTE tmCharSet;/字符集 TEXTMETRIC;,计算坐标信息,后续字符的坐标根据

8、当前字符串宽度计算得到。BOOL GetTextExtentPoint32(HDC hdc,LPCTSTR lpString,/文本字符串int cbString,/字符串所含字符个数LPSIZE lpSize/指针指向返回字符串高度和宽度的size结构体);,size结构体typedef struct tagSIZE LONG cx;/字符串宽度LONG cy;/字符串高度 SIZE;,确定坐标,后续文本坐标:cx1=cx0+size.cx确定下一行文本坐标:cy1=cy0+size.cy;其中:cy=tm.tmHeiht+tm.ExternalLeading,文本输出,文本输出函数:BOO

9、L TextOut(HDC hdc,int nXStart,/x轴起始坐标int nYStart,/y轴起始坐标LPCTSTR lpString,/输出的字符串int cbString/字符串中的字符个数);,/消息处理函数long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)static ifstream fin;static long nXChar,nYChar;HDC hDC;/定义指向设备描述表的句柄 TEXTMETRIC tm;PAINTSTRUCT PtStr;/定义指向包含绘图信息的结构体变量sta

10、tic char textbuf501;static HFONT hF;static lbuttondown=0;static rbuttondown=0;static SIZE size;static char cMouseText=鼠标按下;int n=0;,switch(iMessage)/处理消息case WM_CREATE:/处理窗口创建消息hF=(HFONT)GetStockObject(GRAY_BRUSH);return 0;case WM_LBUTTONDOWN:lbuttondown=1;hF=CreateFont(60,15,0,0,400,1,0,0,ANSI_CHAR

11、SET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,新字体);,InvalidateRect(hWnd,NULL,1);break;case WM_RBUTTONDOWN:rbuttondown=1;hF=CreateFont(40,0,0,0,400,0,1,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,新字体);InvalidateRect(hWnd,NULL,1);break

12、;,case WM_PAINT:/处理重画消息hDC=BeginPaint(hWnd,if(lbuttondown|rbuttondown)fin.open(myfile.txt);while(!fin.eof()fin.getline(textbuf,500);GetTextExtentPoint32(hDC,textbuf,strlen(textbuf),elsefin.open(myfile.txt);while(!fin.eof()GetTextMetrics(hDC,nXChar=0;nYChar=0;fin.close();EndPaint(hWnd,运行结果,单击鼠标左键,单击鼠标右键,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号