欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:5520588       资源大小:212KB        全文页数:37页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第5章 文本与字体,使用定义好的与设备无关的字体集,Windows就能维护它的设备无关性,提供“所见即所得”的好处,即屏幕所见与设备输出的文本是一样的。,文本操作,先要获得文本句柄,设置字体、字符大小、字符颜色等有关属性,将这些属性选入设备环境,字体,逻辑字体定义的字符集是设备无关的,它可以精确标度,因此得到广泛应用,描述所要显示的文本的大小、类型和外形,物理字体是为特殊设备设计的,因而是设备相关的,Win 系统提供了七种基本字体,字体 说明ANSI_FIXED ANSI标准的固定宽度的字体ANSI_VAR ANSI标准的可变宽度的字体DEFAULT_GUI当前GUI的默认字体OEM_FIXED 由标准原设备制造商(OEM)提供DEVICE_DEFAULT当前图形设备的字体SYSTEM_FIXEDWindows的标准固定宽度的字体SYSTEM Windows提供的可变宽度的字体,常作为默认字体 Win用它作为系统界面字体,5.1 设置文本的设备环境 5.1.1 字体句柄,(1)定义字体句柄变量:HFONT hF;/hF为字体的句柄,(2)调函数GetStockObject获得系统字体句柄 它返回的是系统的默认字体 hF=GetStockObject():,(3)调用函数SelectObject将字体选入设备环境 SelectObject(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,/如果要求下划线,则取非零 DWORD dwStrikeout,/如果要求中划线,则取非零 DWORD dwCharset,/字体所属字符集 DWORD dwOutputPrecision,/输出精度,一般取默认值OUT_DEFAULT_PRECIS DWORD dwClipPrecision,/剪裁精度,常取默认值CLIP_DEFAULT_PRECIS DWORD dwQuality,/输出质量,一般取默认值DEFAULT_QUALITY DWORD dwPitchAndFamily,/字体名),可选的系统字符集:ANSI_CHARSETOEM_CHARSETSYMBOL_CHARSETDEFAULT_CHARSETSHIFTJIS_CHARSET,5.1.2 创建自定义字体,crColor为设置的颜色,字体及背景颜色的设置在开发过程中非常重要,5.1.3 设置字体和背景颜色,5.2 文本的输出过程,获取字体信息,系统定义的TEXTMETRICS的结构如下:typedef struct tagTEXTMETRIC/tmLONG tmHeight;/字符高度LONG tmAscent;/字符基线以上高度LONG tmDescent;/字符基线以下高度LONG tmInternalLeading;/tmHeight制订的字符高度顶部的控件LONG tmExternalLeading;/行与行之间的间隔LONG tmAveCharWidth;/平均字符宽度LONG tmMaxCharWidth;/最大字符宽度LONG tmWeight;/字符的粗细度LONG tmOverhang;/合成字体间附加的宽度LONG tmDigitizedAspectX;/为输出设备设计的X轴尺寸LONG tmDigitizedAspectY;/为输出设备设计的Y轴尺寸BCHAR tmFirstChar;/字体中第一个字符值BCHAR tmLastChar;/字体中最后一个字符值BCHAR tmDefaultChar;/代替不在字体中字符的字符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指向的TEXTMETRICS结构中,换行时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中的字符串,【例5-1】在用户窗口上输出几行字符串,当窗口接收到WM_PAINT消息后,显示的文本每次都被重新刷新。,#include#include#includelong 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 WinMain(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 nXChar,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;,输出的文本内容,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)/初始化窗口 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 CALLBACK 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=lpszClassName;,if(!RegisterClass(,LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)HDC hdc;HFONT hF_black,hF_big;/定义两种字体句柄PAINTSTRUCT ps;TEXTMETRIC tm;/定义一个TEXTMETRIC结构,用以记录字体信息char lpsz_1=这是一行红色的、字体为SYSTEM_FONT的文字,红色代表未来。;char lpsz_2=现在显示的是自定义字体,颜色为绿色,绿色代表生机勃勃。;char lpsz_3=现在展现在您面前的是蓝色的粗体字,蓝色代表广阔的海洋和天空。;char lpsz_4=当前字体为大号、斜体并带有下划线的文字。;char lpsz_5=现在您掌握了字体的操作了吗?;char lpsz_6=祝您成功!;int X=0,Y=0;SIZE size;/定义一个SIZE类型的结构,switch(message)case WM_PAINT:hdc=BeginPaint(hwnd,/字体名称,SetTextColor(hdc,RGB(0,255,0);/设置文本颜色为绿色SelectObject(hdc,hF_black);/将自定义字体选入设备环境GetTextMetrics(hdc,hF_big=CreateFont/引入新字体(30,/字体高度0,0,0,FW_NORMAL,1,/定义斜体1,/定义输出时带下划线0,ANSI_CHARSET,/所使用的字符集OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,大号字);,SelectObject(hdc,hF_big);/将自定义字体选入设备环境SetTextColor(hdc,RGB(155,155,155);/设置文本颜色Y=Y+tm.tmHeight+20*tm.tmExternalLeading;TextOut(hdc,X,Y,lpsz_4,strlen(lpsz_4);/输出文本SetTextColor(hdc,RGB(255,0,0);/设置文本颜色为红色X=0;/设定输出文本的X坐标位置Y=Y+tm.tmHeight+30*tm.tmExternalLeading;TextOut(hdc,X,Y,lpsz_5,strlen(lpsz_5);/输出文本/在该行继续输出文本GetTextExtentPoint32(hdc,lpsz_5,strlen(lpsz_5),case WM_DESTROY:DeleteObject(hF_black);/退出窗口时删除自定义字体 DeleteObject(hF_big);PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;,【例5-3】在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。如图所示。,用nChar标志红色跳起字母在26个字母的位置,本例题要解决动态显示问题:,首先处理第一行字符:在WM_PAINT消息处理程序中,在得到了设备环境句柄hDC后,调用用户自定义的函数CreateFont(hDC,nHeight,bItalic),第一个参数hDC是设备环境句柄,第2个参数nHeight是字体高度,第3个参数bItalic是斜字体的标志变量。,下面这段程序按照黑色的字体输出从字符串开头到当前位置的字符串:Y=tm.tmExternalLeading+10;/设置输出字符的Y坐标 for(i=0;inChar;i+)SetTextColor(hDC,RGB(0,0,0);/设置字体的颜色为黑色 X=X+tm.tmAveCharWidth*2;/设置输出字符的X坐标 TextOut(hDC,X,Y,/输出从第0个到第nChar-1个字符,下面输出当前位置上的字符,当前位置的字符位置提高10个像素单位,字体颜色为红色:SetTextColor(hDC,RGB(255,0,0);/设置字体的颜色为红色X=X+tm.tmAveCharWidth*2;/设置输出字符的X,Y坐标Y=tm.tmExternalLeading;/提高10个像素hF=CreateFont(hDC,40,0);/创建字体SelectObject(hDC,hF);/选入字体TextOut(hDC,X,Y,/输出后面的字符,下面设置bRight和bLeft的值。if(nChar=nCharlen)/当输出到最后的一个字符时bRight=FALSE;/改变红色字移动的方向为向左bLeft=TRUE;else(nChar=0)/当输出到第一个字时bRight=TRUE;/改变红色字移动的方向为向右bLeft=FALSE;if(bRight=TRUE)nChar+;else nChar-;,如果nChar=等于字符串长度=已到了字符串末尾,将bRight置为True字符长度=0时,已到了最左端,将bLeft置为True;当bRight=True时字符位置标志nChar加1,当bLeft=True时,字符位置标志变量减1。,下面输出第2行字符:在WM_PAINT处理程序中,加入下列代码:hF=CreateFont(hDC,40,bItalic);/创建字体,大小为40SelectObject(hDC,hF);/选入字体X=tm.tmAveCharWidth*2;/设置输出位置Y=tm.tmHeight*2;if(bItalic=TRUE)SetTextColor(hDC,RGB(0,0,0);else SetTextColor(hDC,RGB(0,255,255);TextOut(hDC,X,Y,lpsz_1,strlen(lpsz_1);/输出if(bItalic=TRUE)bItalic=FALSE;else bItalic=TRUE;,调用用户自定义函数CreateFont()创建斜体字,确定输出位置根据bItalic的状态设置字体的颜色。当bItalic为真时,输出斜体天蓝色字符;为假时,输出正常黑色字体最后对bItalic取反,在下一次显示与此次不同的另一种效果。,【例5-4】将一首四句的古诗从右到左竖排输出。要求窗口每次接收到WM_PAINT消息时都刷新显示的文本。,#include#include#includelong WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);HWND hWndMain;/主函数int WINAPI WinMain(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)1.static long nXChar,nCaps,nYChar;2.int pointx,pointy,int i,j;3.HDC hDC;/定义指向设备环境的句柄4.TEXTMETRIC tm;/存放字体各种属性的结构体变量5.PAINTSTRUCT PtStr;/指向包含绘图信息的结构体变量6.static char*textbuf4=故人西辞黄鹤楼,烟花三月下扬州,孤帆远影碧空尽,唯见长江天际流;7.switch(iMessage)/处理消息8.case WM_CREATE:/处理窗口创建消息9.hDC=GetDC(hWnd);/获取当前设备表句柄10.GetTextMetrics(hDC,创建自定义字体的例题程序。在窗口中显示“自定义的字体”,字体颜色为红色,背景色为蓝色。其运行结果应如下图所示:,LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)1.HDC hdc;/设备句柄 2.PAINTSTRUCT ps;/画刷结构 3.int Xchar,Ychar;4.SIZE size;5.LPCTSTR*pstring=“自定义的字体”;6.RECTrect;/无效矩形区 7.HFONT holdFont,hnewFont;8.switch(message)/消息处理函数9.case WM_CREATE:return 0;/窗口创建10.case WM_PAINT:/绘制消息11.hnewFont=CreateFont/创建一种新的逻辑字体(64,0,0,0,500,0,0,0,GB2312_CHARSET,14.OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,17.DEFAULT_PITCH,19.hdc=BeginPaint(hwnd,

    注意事项

    本文(《文本与字体 》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开