第5章文本与字体ppt课件.ppt
《第5章文本与字体ppt课件.ppt》由会员分享,可在线阅读,更多相关《第5章文本与字体ppt课件.ppt(37页珍藏版)》请在三一文库上搜索。
1、第5章 文本与字体,使用定义好的与设备无关的字体集, Windows就能维护它的设备无关性,提供“所见即所得”的好处,即屏幕所见与设备输出的文本是一样的。,文本操作,先要获得文本句柄,设置字体、字符大小、字符颜色等有关属性,将这些属性选入设备环境,字体,逻辑字体定义的字符集是设备无关的,它可以精确标度,因此得到广泛应用,描述所要显示 的文本的大小、 类型和外形,物理字体是为特殊设备设计的,因而是设备相关的,Win 系统 提供了七种 基本字体,字体 说明 ANSI_FIXED ANSI标准的固定宽度的字体 ANSI_VAR ANSI标准的可变宽度的字体 DEFAULT_GUI 当前GUI的默认字
2、体 OEM_FIXED 由标准原设备制造商(OEM)提供 DEVICE_DEFAULT 当前图形设备的字体 SYSTEM_FIXED Windows的标准固定宽度的字体 SYSTEM Windows提供的可变宽度的字体,常作为默认字体 Win用它作为 系统界面字体,5.1 设置文本的设备环境 5.1.1 字体句柄,(1) 定义字体句柄变量: HFONT hF; /hF为字体的句柄,(2) 调函数GetStockObject获得系统字体句柄 它返回的是系统的默认字体 hF= GetStockObject( ):,(3) 调用函数SelectObject将字体选入设备环境 SelectObject
3、(hdc,hF);,选择系统字体的步骤,若需要定义系统以外的字体,可以调用函数GreateFont自行创建 HFont=CreateFont (int nHeight, /字体高度,0采用系统默认值,使用逻辑单位 int nWidth, /字体宽度,取0则由系统根据高宽比取最佳值 int nEscapement, /每行文字相对于页底的角度,单位为0.1度 int nOrienation, /每个文字相对于页底的角度,单位为0.1度 DWORD nWeight, /字体粗细度,范围为01000 DWORD Dwltalic, /如果要求字体倾斜,则取非零 DWORD dwUnderline,
4、/如果要求下划线,则取非零 DWORD dwStrikeout, /如果要求中划线,则取非零 DWORD dwCharset, /字体所属字符集 DWORD dwOutputPrecision,/输出精度,一般取默认值OUT_DEFAULT_PRECIS DWORD dwClipPrecision, /剪裁精度,常取默认值CLIP_DEFAULT_PRECIS DWORD dwQuality, /输出质量,一般取默认值DEFAULT_QUALITY DWORD dwPitchAndFamily, /字体名 ),可选的系统字符集: ANSI_CHARSET OEM_CHARSET SYMBOL_
5、CHARSET DEFAULT_CHARSET SHIFTJIS_CHARSET,5.1.2 创建自定义字体,crColor为设置的颜色,字体及背景颜色 的设置在开发过 程中非常重要,5.1.3 设置字体和背景颜色,5.2 文本的输出过程,获取字体信息,系统定义的TEXTMETRICS的结构如下: typedef struct tagTEXTMETRIC /tm LONG tmHeight; /字符高度 LONG tmAscent; /字符基线以上高度 LONG tmDescent; /字符基线以下高度 LONG tmInternalLeading; /tmHeight制订的字符高度顶部的控件
6、 LONG tmExternalLeading; /行与行之间的间隔 LONG tmAveCharWidth; /平均字符宽度 LONG tmMaxCharWidth; /最大字符宽度 LONG tmWeight; /字符的粗细度 LONG tmOverhang; /合成字体间附加的宽度 LONG tmDigitizedAspectX; /为输出设备设计的X轴尺寸 LONG tmDigitizedAspectY; /为输出设备设计的Y轴尺寸 BCHAR tmFirstChar; /字体中第一个字符值 BCHAR tmLastChar; /字体中最后一个字符值 BCHAR tmDefaultCh
7、ar; /代替不在字体中字符的字符 BCHAR tmBreakChar; /作为分割符的字符 BYTE tmItalic; /非0则表示字体为斜体 BYTE tmUnderlined; /非0则表示字体有下划线 BYTE tmStruckOut; /非0则表示字符为删除字体 BYTE tmPitchAndFamily; /字体间距和字体族 BYTE tmCharSet; /字符集 TEXTMETRIC,格式化文本,(1) 确定后续文本坐标,例如,X轴起始坐标为cx0,后续文本起始坐标cx1为: cx1=cx0+size.cx;,(2)确定换行时文本坐标,字符的高度与行间隔均存储在tm指向的TE
8、XTMETRICS结构中,换行时Y轴上文本的起始坐标cy为: cy=tm.tmHeight+tm.tmExternalLeading;,通过计算当前行文本字符的高度与行间隔之和,即可得到换行时文本的起始坐标,文本输出,常用的文本输出函数TextOut原型如下: BOOL TextOut ( HDC hdc, int X, int Y, /X, Y为用户区中字符串的起始坐标 LPCTSTR lpstring, /lpstring为显示的字符串 int nCount /nCount为字符串中的字节数 );,TextOut 以坐标X,Y为起点, 输出字节数为 nCount、 名为lpstring中的
9、字符串,【例5-1】在用户窗口上输出几行字符串,当窗口接收到WM_PAINT消息后,显示的文本每次都被重新刷新。,#include #include #include long WINAPI WndProc( HWND hWnd, UINT iMessage, UINT wParam, LONG lParam ); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance,int nCmdShow); HWND hWndMain;,5.3 文本操作实例,/主函数 int WINAPI Win
10、Main( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MSG Message; if(!InitWindowsClass(hInstance) return FALSE; if(!InitWindows(hInstance,nCmdShow)return FALSE; while(GetMessage( ,/消息处理函数 long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) static long n
11、XChar,nCaps,nYChar; HDC hDC; /定义指向设备上下文的句柄 short x; TEXTMETRIC tm; short LnCount=6; PAINTSTRUCT PtStr; /定义指向包含绘图信息的结构体变量 static char *textbuf= “This is the First line“, “This is the second line“, “This is the third line“, “This is the fourth line“, “This is the fifth line“, “This is the sixth line“
12、;,输出的文 本内容,switch(iMessage) /处理消息 case WM_CREATE: /处理窗口创建消息 hDC=GetDC(hWnd) ; /获取当前设备表句柄 GetTextMetrics(hDC, ,BOOL InitWindowsClass(HINSTANCE hInstance) /初始化窗口类 WNDCLASS WndClass; ; WndClass.style=CS_HREDRAW|CS_VREDRAW; return RegisterClass( ,BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) /初始化窗口
13、 HWND hWnd; hWnd=CreateWindow(“WinText“, /生成窗口 “文本显示示例程序“, WS_OVERLAPPEDWINDOW, .; NULL); if(!hWnd) return FALSE; hWndMain=hWnd; ShowWindow(hWnd,nCmdShow); /显示窗口 UpdateWindow(hWnd); return TRUE; ,【例5-2】本程序通过在窗口中分五行分别显示五行文本,以说明在窗口的用户区中输出文本的方法。,本例题的源代码如下: #include #include #include #include LRESULT CA
14、LLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) HWND hwnd; MSG Msg; WNDCLASS wndclass; char lpszClassName = “文本输出“; char lpszTitle= “EXAMPLE FOR THE TEXT OUTPUT“; wndclass.style = 0; ; wndclass.lpszClassName = lpszC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 字体 ppt 课件
链接地址:https://www.31doc.com/p-2577953.html