第10章 字体与文本

上传人:hjk****65 文档编号:203998720 上传时间:2023-04-25 格式:PPT 页数:22 大小:64.50KB
返回 下载 相关 举报
第10章 字体与文本_第1页
第1页 / 共22页
第10章 字体与文本_第2页
第2页 / 共22页
第10章 字体与文本_第3页
第3页 / 共22页
点击查看更多>>
资源描述
第10章 字体与文本显示图形系统中为了获得当前运行程序的相关信息,往往需要在屏幕上显示文本,D3D 的功能扩展ID3DXFont()对此提供了方便的解决方法。.二维文本绘制通过D3D功能对象ID3DXFont可以绘制文本,主要使用:ID3DXfont:DrawText()和ID3DXFont:GetDevice()函数。1.创建ID3DXFont对象使用接口ID3DXFont绘制文本,首先需要通过函数D3DXCreateFont()函数通过Windows字体和D3D设备指针创建ID3DXFont对象。ID3DXCreateFont()函数声明HRESULT D3DXCreateFont(LPDIRECT3DDEVICE9 pDevice,INT Height,UINT Width,UINT Weight,UINT MipLevels,BOOL Italic,DWORD CharSet,DWORD OutputPrecision,WORD Quality,DWORD PitchAndFamilyLPCTSTR pFacename,LPD3DXFONT*ppFont);ID3DXCreateFont()函数参数说明pDevice:表示一个有效的D3D设备指针Height:表示创建字体的逻辑高度,如果等于则使用字体的默认高度。Width:表示创建字体的平均逻辑宽度,如果等于,则使用字体的默认宽度。Weight、MipLevelsItalic:表示字体的权舆和过滤属性,一般取默认值0。CharSet:表示创建字体所属的字符集合,如果设为D3FAULT_CHARSET,则函数将自动寻找与指定字体相符的字符集合。ID3DXCreateFont()函数参数说明(续)OutputPrecision:指定字符的输出精度,通常情况下将该值设为OUT_DEFAULT_PRECIS。Quality:指定字符的输出质量,通常情况下将该值设为D3FAULT_QUALITY。PitchAndFamily:指定字休的索引号pFaceName是指向表示字体名称的字符串。ppFont:存储新创建的字体指针。通过Arial字体创建一个ID3DXFont对象LPD3DXFONT g_pFont =0;if(FAILED(D3DXCreateFont(g_pd3dDevice,0,0,0,0,0,0,0,0,LArial,&g_pFont)return E_FAIL;2.使用ID3DXFont对象绘制二维文本创建了ID3DXFont对象后,就可以使用其接口函数ID3DXFont:DrawText()在指定位置绘制二维文本。该函数支持ANSI双字节字符串。ID3DXFont:DrawText()函数声明INT ID3DXFont:DrawText(LPD3DXSPRITE pSprite,LPCSTR pSting,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color);ID3DXFont:DrawText()参数说明pSprite:指定字符串所属的ID3DXSprite对象接口,可置为默认值为,表示在当前窗口绘制字符串。pSting:指定将要绘制的字符串。Count:指定绘制字符的个数,如果等于-1,则函数将自动绘制到字符串结束为止。pRect:指定绘制字符串的矩形区域位置。Format:指定字符串在pRect指定的矩形区域内的摆放属性,这些属性可以通过位去处“或”(|)联合使用。Color:指定字符串的颜色值,属于D3DCOLOR结构。常用字符串排放属性摆放属性说明DT_BOTTOM字符串位于pRect的底部,该心性只能与DT_SINGLELINE共存DT_CALCRECT 根据字符串的长度更改pRect指定的矩形区域的大小。DT_CENTER字符串位pRect的水平居中DT_LEFT字符串向pRect的左边对齐DT_NOCLIP不对字符串进行裁剪常用字符串排放属性(续表)摆放属性说明DT_RIGHT字符串向pRect右方对齐DT_SINGLELINE 将字符串单行显示,忽略换行标记。DT_TOP字符串位于pRect的顶端DT_VCENTER字符串位于pRect垂直居中下列代码在窗口客户区中央显示一行白色的文字:Welcome Direct3D!WCHAR*strText =LWelcome Direct3D!;g_pFont-DrawText(NULL,strText,(int)wcslen(strText),&clientRect,DT_SINGLELINE|DT_NOCLIP|DT_CENTER|DT_VCENTER,0 xffffffff);3.ID3DXFont其他相关接口函数函数ID3DXFont:GetDevice()能够获得与ID3DXFont相关联的D3D设备指针,该函数声明如下:.三维文本绘制1.创建三维文本网格模型在D3D中,三维物体的显示是通过网格模型来实现的,显示三维物体的关键在于生成该网格模型。三维文本也不例外,显示三维文本同样需要该文本所对应的网格模型。D3D为此提供了功能库函数D3DXCreateText(),它可以方便地创建一个包含具体文本的网格模型。D3DXCreateText()声明HRESULT D3DXCreateText(LPDIRECT3DDEVICE9pDevice,HDC hDC,LPCTSTR pText,FLOAT Deviation,FLOAT Extrusion,LPD3DXMESH*ppMesh,LPD3DXBUFFER*ppAdjacency,LPGLYPHMETERICSFLOAT pGlyphMetrics)D3DXCreateText()参数说明LpDevice:用于创建网格的3D设备指针hDC:表示设备描述表。pText:指定具体文本字符串Deviation:指定弦偏差的最大值。Extrusion:指定文本在z轴负方向突出的总量。ppMesh:指向生成字体网格模型地址的指针。ppAdjacency:指向包含相关输出信息缓冲区的指针,可以为NULL。pGlyphMetrics:指向GLYPHMETRICSFLOAT结构体数组指,该数组可以包括所有字符的相关数据。创建文本“三维字体”的网格模型的代码/创建设备描述表HDC hdc=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);2.绘制三维文本网格模型创建好文本的网格模型之后,就可以使用ID3DXMesh的接口函数DrawSubset()将其绘制出来,在绘制之前需要注意设置合适的世界矩阵,这时虽然是绘制三维文本,但实质上就是绘制一个三维物体,所以为三维文本设置世界矩阵是必不可少的。绘制三维文本的代码片段VOID SetWorldMatrix()/创建并设置世界矩阵 D3DXMATRIX matWorld;D3DXMATRIX matTrans;D3DXMatrixTranslation(&matWorld,-1.75f,0.0f,0.0f);/平移 g_pd3dDevice-SetTransform(D3DTS_WORLD,&matWorld);pTextMesh-DrawSubset(0);小结文本绘制是图形程序设计中不可或缺的一部分,正确适当地进行文本绘制在图形程序设计中具有非常重要的实际意义。本章通过两个示例程序详细介绍了在D3D中如何进行二维和三维文本的绘制。二信字体的显示比较简单,可以结合示例程序进一步加深理解。三维字体的显示关键在于构造出字符串所对应的网格模型,然后在场景中渲染该三维模型即可。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 研究报告 > 酒店餐饮


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!