DX9显示文字

创建Form1,输入以下源码:

Private Sub Form_Load()'新手注意:游戏编程中,
'通常将窗体的 BorderStyle 设置为“Fixed single”即不允许改变窗体大小
'通常将窗体的 MinButton 设置为“True”即允许最小化
'通常将窗体的 MaxButton 设置为“False”即禁止最大化'初始化引擎并设置引擎初始化窗体和引擎分辨率,但最好是电脑常用的分辨率比如 640,480 、 800,600 、 1024,768 、 1366,768
CWVBDX9Initialization Me, 800, 600, CW_Windowed'初始化引擎(目标窗体,横向分辨率,纵向分辨率,窗口模式/全屏模式)Dim FontDemo1 As CWFont, FontDemo2 As CWFont, FontDemo3 As CWFont    '定义CoolWind引擎字体变量
Const HelloWorld$ = "Hello World!"CWLoadFont FontDemo1, "SimSun", 32, CWF_Bold, FalseCWLoadFont FontDemo2, "@SimHei", 32, CWF_Normal, FalseCWLoadFont FontDemo3, "Microsoft YaHei", 64, CWF_Normal, False'载入字体(字体变量,字体类型,字体大小,是否为粗体,是否为斜体)'注意:载入的字体类型必须是正在运行该游戏的系统上存在的字体.否则将默认按"宋体"载入'小技巧:在大多数字体名前加上@可以让字体横过来~!Do While CWGameRun = True         '进入游戏循环If CWD3DDevice9.TestCooperativeLevel = 0 And Me.WindowState <> 1 Then  '检测是否可以渲染(设备正常并且窗体未最小化时渲染)CWBeginScene    '准备好绘制场景CWPaintPicBeginCWPrintFont FontDemo1, CWFPS, 0, 0, 800, 60, CWWhite, CWF_LeftAl    '显示当前FPSCWPrintFont FontDemo1, "队长~   是我~!", 0, 100, 800, 60, CWCyan, CWF_LeftAlCWPrintFont FontDemo2, "      别开枪        ", 0, 100, 800, 60, CWRed, CWF_LeftAl'输出字体(字体,目标文字,显示起点横坐标,显示起点纵坐标,显示区宽度,显示区高度,字体颜色,对齐方式)'注意:文字总长度超过显示区宽度将引起换行.   文字总长度超过显示区高度将引起裁剪,即超过部分不显示.Dim CX&, CY&    '计算文本显示大小,并绘制文本边框。CWCalcrFont FontDemo3, HelloWorld, CX, CY, TrueCWPrintFont FontDemo3, HelloWorld, 400 - CX * 0.5!, 300, CX, CY, CWYellow, DT_SINGLELINE Or DT_NOCLIPCWDrawHRect 400 - CX * 0.5!, 300, CX, CY, CWBlueCWPaintPicEndCWPresentScene   '呈现绘制的场景'*******************************以下为固定写法,不要轻易改动***********************************Else                 '当不满足渲染条件时CWResetDevice       '修复设备End IfLoopCWVBDX9Destory     '销毁CoolWind引擎End '退出
'*******************************以上为固定写法,不要轻易改动***********************************End Sub

BAS还是有之前的。
显示效果如下:

ID3DXFont接口:ID3DXFont接口封装了在特定设备上渲染特定字体所需的纹理和资源。
ID3DXFont接口具有以下方法:

通过调用D3DXCreateFont或D3DXCreateFontIndirect获得ID3DXFont接口。
LPD3DXFONT类型定义为指向ID3DXFont接口的指针。
C++调用:

typedef interface ID3DXFont ID3DXFont;
typedef interface ID3DXFont *LPD3DXFONT;

在VB6中调用如下:

Public CWFontList() As D3DXFont, CWFontNum As Long D3DXCreateFontW CWD3DDevice9, FSize, 0, FBold, 0, FItalic, 1, 0, 4, 0, FName,  CWFontList(CWFontNum) '创建字体

其中, D3DXCreateFontW:为设备和字体创建字体对象。
C++调用原型:

HRESULT D3DXCreateFont(_In_  LPDIRECT3DDEVICE9 pDevice,//指向IDirect3DDevice9接口的指针,与字体对象关联的设备。_In_  INT               Height,//逻辑单元中字符的高度。_In_  UINT              Width,//逻辑单元中字符的宽度。_In_  UINT              Weight,//字体粗细。_In_  UINT              MipLevels,//mipmap级别的数目。_In_  BOOL              Italic,//斜体为True,否则为false。_In_  DWORD             CharSet,//字体的字符集。_In_  DWORD             OutputPrecision,//指定Windows应如何尝试将所需的字体大小和特征与实际字体相匹配。例如,使用OUT_TT_ONLY_PRECIS,以确保始终获得TrueType字体。_In_  DWORD             Quality,//指定Windows应如何将所需字体与实际字体匹配。它仅适用于光栅字体,不应影响TrueType字体。_In_  DWORD             PitchAndFamily,//音高和系列索引。_In_  LPCTSTR           pFacename,//包含字体名称的字符串。如果编译器设置需要Unicode,则数据类型LPCTSTR解析为LPCWSTR。否则,字符串数据类型解析为LPCSTR。参见备注。_Out_ LPD3DXFONT        *ppFont//返回指向ID3DXFont接口的指针,该接口表示创建的字体对象。
);

D3DXFont各个方法说明如下:
1,ID3DXFont::OnLostDevice:使用此方法释放对视频内存资源的所有引用并删除所有状态块。每当设备丢失或重置设备之前,应调用此方法。
C++调用:

HRESULT OnLostDevice();

在VB6中调用:

If CWFontNum > 0 ThenFor I = 1 To CWFontNumCWFontList(I).OnLostDeviceNextEnd If

2,ID3DXFont::OnResetDevice:使用此方法重新获取资源并保存初始状态。
C++调用:

HRESULT OnResetDevice();

在VB6中调用:

If CWFontNum > 0 Then
For I = 1 To CWFontNumCWFontList(I).OnResetDeviceNext
End If

3,ID3DXFont::DrawText:绘制格式化文本。此方法支持ANSI和Unicode字符串。
C++调用:

INT DrawText([in] LPD3DXSPRITE pSprite,//指向包含字符串的ID3DXPrite对象的指针。可以为NULL,在这种情况下,Direct3D将使用自己的sprite对象呈现字符串。为了提高效率,如果要在一行中多次调用DrawText,则应指定sprite对象。[in] LPCTSTR      pString,//指向要绘制的字符串的指针。如果Count参数为-1,则字符串必须以null结尾。[in] INT          Count,//指定字符串中的字符数。如果Count为-1,则pString参数假定为指向以null结尾的字符串的指针,DrawText将自动计算字符数。[in] LPRECT       pRect,//指向RECT结构的指针,该结构包含要格式化文本的逻辑坐标中的矩形。矩形右侧的坐标值必须大于其左侧的坐标值。同样,底部的坐标值必须大于顶部的坐标值。[in] DWORD        Format,//指定设置文本格式的方法。它可以是以下值的任意组合:[in] D3DCOLOR     Color//文本的颜色。有关更多信息,请参阅D3DCOLOR。
);

其中 文字格式Format组合如下:

DX9显示文字-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(14)相关推荐

  1. 猜歌小游戏多功能组合微信小程序源码下载

    这是一款多功能游戏组合的一款小程序 比如猜歌,摇骰子,真心话大冒险等等 php7.2 mysql5.6 1.上微擎框架 2.将后台两个压缩包上传到addons目录下解压 创建小程序应用 3.后台设置一 ...

  2. 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏

    基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...

  3. java毕业设计——基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码)——打飞机游戏

    基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME+sqlserver的打飞机游戏设计与实现,文章末尾附有本毕业设计的 ...

  4. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏

    基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的贪吃蛇游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  5. 【java毕业设计】基于java+Eclipse的飞机大战游戏设计与实现(毕业论文+程序源码)——飞机大战游戏

    基于java+Eclipse的飞机大战游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Eclipse的飞机大战游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  6. 【java毕业设计】基于java+Socket+Eclipse的坦克大战游戏设计与实现(毕业论文+程序源码)——坦克大战游戏

    基于java+Socket+Eclipse的坦克大战游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Socket+Eclipse的坦克大战游戏设计与实现,文章末尾附有本毕业设 ...

  7. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码

    ThinkPHP溪谷H5游戏平台系统V3.0完整版源码,新增H5游戏盒子APP以及混服系统两大版块, 最新溪谷H5游戏平台系统v3.0完整版源码,在成熟版本H5游戏平台系统基础上开发出的更便捷高效的专 ...

  8. 云开发版高效学习微信小程序源码包含复习资料学习共享护眼精灵等功能

    ☑️ 编号:X0016 ☑️ 品牌:暂无 ☑️ 语言:微信小程序 ☑️ 数据库:无需数据库 ☑️ 类型:微信小程序 ☑️ 规格:小程序 ※ 欢迎关注私信(发消息不限制),领取福利 ※ ☑️ 源码介绍: ...

  9. DX9的一些方法介绍-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(9)

    DX9的一些方法介绍(IDirect3D9) 在前边的源码中,引用了一些DX9的方法,我这里做了一个笔记,大家可以看看. 1,IDirect3DDevice9::SetTexture 方法:将纹理分配 ...

最新文章

  1. php登陆验证码错误,DEDE织梦后台登陆提示验证码错误的方法
  2. Java Thread类的使用
  3. 字符串复制中的while条件
  4. 中班科学计算机,幼儿园中班科学课件:《照镜子》
  5. maya中英文对比_maya中英文对照表
  6. 编写了一个文件编码转换器。
  7. [转载] Python dict.keys方法
  8. 路由器接口为啥不能配置为任意播地址_计算机三级网络技术(7):路由器配置及使用(下)...
  9. 【转】在C#中读写INI配置文件
  10. c# webform js文件获取客户端控件,后台cs获取前台客户端控件的值,c#和js的交互...
  11. windows程序设计(第五版珍藏版)清华大学出版
  12. xjad一款不错的java反编译软件
  13. 如何恢复误删SD卡文件?SD卡误删除数据恢复
  14. 翻译题9寒假1周赛题
  15. C#控制定位Word光标移动到任意行或者最后一行,取得光标位置等操作
  16. WinSxS目录下文件的清除
  17. 深蓝学院-视觉SLAM理论与实践-第十二期-第2章作业
  18. linux搭建pptpd服务器,最简单的Linux系统上的pptpd服务器安装
  19. winscp如何连接安卓手机_通过winscp连接路由器
  20. Fluent边界条件设定方法

热门文章

  1. [论文速览] Dataset and Neural Recurrent Sequence Labeling Model for Open-Domain Factoid Question Answeri
  2. 高通平台 屏幕相关问题
  3. 关于java实例方法可以访问类变量的一种解释
  4. C# Winform开发 文件夹的删除
  5. 软件测试常用工具(附下载地址)
  6. homeassistant中usb摄像头的使用(usb转web摄像头)
  7. Android WiFi系统
  8. 最新iApp源码小易工具箱源码+功能超级多
  9. java语言算法描述_六大java语言经典算法
  10. 非常好看的BT宝塔面板美化透明版主题包