《字体与文本》PPT课件.ppt_第1页
《字体与文本》PPT课件.ppt_第2页
《字体与文本》PPT课件.ppt_第3页
《字体与文本》PPT课件.ppt_第4页
《字体与文本》PPT课件.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第10章 字体与文本显示,图形系统中为了获得当前运行程序的相关信息,往往需要在屏幕上显示文本,D3D 的功能扩展ID3DXFont()对此提供了方便的解决方法。,.二维文本绘制,通过D3D功能对象ID3DXFont可以绘制文本,主要使用: ID3DXfont:DrawText()和 ID3DXFont:GetDevice()函数。,创建ID3DXFont对象,使用接口ID3DXFont绘制文本,首先需要通过函数D3DXCreateFont()函数通过Windows字体和D3D设备指针创建ID3DXFont对象。,ID3DXCreateFont()函数声明,HRESULT D3DXCreateF

2、ont( LPDIRECT3DDEVICE9 pDevice, INT Height,UINT Width,UINT Weight, UINT MipLevels,BOOL Italic, DWORD CharSet, DWORD OutputPrecision,WORD Quality, DWORD PitchAndFamily LPCTSTR pFacename, LPD3DXFONT * ppFont );,ID3DXCreateFont()函数参数说明,pDevice:表示一个有效的D3D设备指针 Height:表示创建字体的逻辑高度,如果等于则使用字体的默认高度。 Width:表示创

3、建字体的平均逻辑宽度,如果等于,则使用字体的默认宽度。 Weight、MipLevelsItalic:表示字体的权舆和过滤属性,一般取默认值0。 CharSet:表示创建字体所属的字符集合,如果设为D3FAULT_CHARSET,则函数将自动寻找与指定字体相符的字符集合。,ID3DXCreateFont()函数参数说明(续),OutputPrecision:指定字符的输出精度,通常情况下将该值设为OUT_DEFAULT_PRECIS。 Quality:指定字符的输出质量,通常情况下将该值设为D3FAULT_QUALITY。 PitchAndFamily:指定字休的索引号 pFaceName是指

4、向表示字体名称的字符串。 ppFont:存储新创建的字体指针。,通过Arial字体创建一个ID3DXFont对象,LPD3DXFONT g_pFont = 0; if (FAILED(D3DXCreateFont( g_pd3dDevice, ,0,0,0,0,0,0,0,0, LArial, ,使用ID3DXFont对象绘制二维文本,创建了ID3DXFont对象后,就可以使用其接口函数ID3DXFont:DrawText()在指定位置绘制二维文本。该函数支持ANSI双字节字符串。,ID3DXFont:DrawText()函数声明,INT ID3DXFont:DrawText( LPD3DXS

5、PRITE pSprite, LPCSTR pSting, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color );,ID3DXFont:DrawText()参数说明,pSprite:指定字符串所属的ID3DXSprite对象接口,可置为默认值为,表示在当前窗口绘制字符串。 pSting:指定将要绘制的字符串。 Count:指定绘制字符的个数,如果等于-1,则函数将自动绘制到字符串结束为止。 pRect:指定绘制字符串的矩形区域位置。 Format:指定字符串在pRect指定的矩形区域内的摆放属性,这些属性可以通过位去处“或”(|)联合使

6、用。 Color:指定字符串的颜色值,属于D3DCOLOR结构。,常用字符串排放属性,常用字符串排放属性(续表),下列代码在窗口客户区中央显示一行白色的文字:Welcome Direct3D!,WCHAR* strText = LWelcome Direct3D!; g_pFont-DrawText(NULL, strText, (int)wcslen(strText), ,ID3DXFont其他相关接口函数,函数ID3DXFont:GetDevice()能够获得与ID3DXFont相关联的D3D设备指针,该函数声明如下:,. 三维文本绘制,创建三维文本网格模型,在D3D中,三维物体的显示是通

7、过网格模型来实现的,显示三维物体的关键在于生成该网格模型。三维文本也不例外,显示三维文本同样需要该文本所对应的网格模型。D3D为此提供了功能库函数D3DXCreateText(),它可以方便地创建一个包含具体文本的网格模型。,D3DXCreateText()声明,HRESULT D3DXCreateText( LPDIRECT3DDEVICE9pDevice, HDC hDC, LPCTSTR pText, FLOAT Deviation, FLOAT Extrusion, LPD3DXMESH *ppMesh, LPD3DXBUFFER *ppAdjacency, LPGLYPHMETERI

8、CSFLOAT pGlyphMetrics ),D3DXCreateText()参数说明,LpDevice:用于创建网格的3D设备指针 hDC:表示设备描述表。 pText:指定具体文本字符串 Deviation:指定弦偏差的最大值。 Extrusion:指定文本在z轴负方向突出的总量。 ppMesh:指向生成字体网格模型地址的指针。 ppAdjacency:指向包含相关输出信息缓冲区的指针,可以为NULL。 pGlyphMetrics:指向GLYPHMETRICSFLOAT结构体数组指,该数组可以包括所有字符的相关数据。,创建文本“三维字体”的网格模型的代码,/创建设备描述表 HDC hdc

9、 = CreateCompatibleDC( NULL ); if( hdc = NULL ) return E_OUTOFMEMORY; /创建字体 HFONT hFont = CreateFont(0, 0, 0, 0, FW_BOLD , false,false, false, DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, LArial); /将字体选进设备描述表 SelectObject(hdc, hFont);,绘制三维文本网格模型,创建好文本的网格模型之后,就可以使用ID3DXMesh的接口函数DrawSubset()将其绘制出来,在绘制之前需要注意设置合适的世界矩阵,这时虽然是绘制三维文本,但实质上就是绘制一个三维物体,所以为三维文本设置世界矩阵是必不可少的。,绘制三维文本的代码片段,VOID SetWorldMatrix() /创建并设置世界矩阵 D3DXMATRIX matWorld; D3DXMATRIX matTrans; D3DXMatrixTranslation(,小结,文本绘制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论