Direct3D字体
D3DX库提供接口ID3DXFont用于在Direct3D应用程序中绘制文本,该接口内部使用GDI(图形设备接口)来绘制文本,因此该接口在性能上略有损失,由于使用GDI所以才能够处理一些复杂的字体和格式。可以用D3DXCreateFontIndirect函数来创建一个ID3DXFont的接口对象。
HRESULT D3DXCreateFontIndirect(LPDIRECT3DDEVICE9 pDevice,CONST D3DXFONT_DESC* pDesc,LPD3DXFONT* ppFont
);
一旦获取了ID3DXFont接口的指针,只需要调用方法ID3DXFont::DrawText即可轻而易举地完成文本的绘制。
INT ID3DXFont::DrawText(LPD3DXSPRITE pSprite,LPCSTR pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color
);Font->DrawText(NULL,"Hello,World",-1,&rect,DT_TOP | DT_LEFT,0xff000000);
pSprite:指定字符串所属的ID3DXSprite对象接口,可设为默认值0或NULL,表示在当前窗口中绘制字符串
pString:指向将要绘制的字符串的指针
Count:字符串中的字符个数,若该值为-1,则认为参数pString指向一个以NULL结尾的字符串,DrawText方法将自动对字符个数进行统计
pRect:指定字符串绘制的矩形区域的位置
Format:指定了字符串在pRect指定的矩形区域中的格式化方法,该参数是一系列可选博阿基的某一个或某种组合
Color:文本颜色
CD3DFont的使用
CD3DFont类绘制文本时使用的是Direct3D而非GDI,所以其绘制的速度比ID3DXFont要快很多,但该类也有缺陷,它不支持ID3DXFont所支持的那些复杂的字体和格式,如果很在意速度而且简单字体能满足要求,CD3DFont类是一个很好的选择。
CD3DFont(const TCHAR* strFontName, DWORD deHeight, DWORD dwFlags = 0L)//实例化一个CD3DFont类的对象后,必须调用如下方法来对字体进行初始化
Font=new CD3DFont("Times New Roman",16,0);
Font->InitDeviceObject(Device);
Font->RestoreDeviceObjects();
StrFontName:一个以NULL结尾的字符串,它指定了字体的名称
dwHeigh:字体的高度
dwFlags:创建标记,该参数可设为0或以下标记的组合,D3DFONT_BOLD、D3DFONT_ITALIC、D3DFONT_ZENABLE
使用DrawText绘制文本
HRESULT CD3DFont::DrawText(FLOAT x,FLOAT y,DWORD dwColor,const TCHAR* strText,DWORD dwFlags = 0)Font->DrawText(20,20,0xff000000,"Hello World");
x:屏幕坐标系中文本绘制的起点的x坐标
y:屏幕坐标系中文本绘制的起点的y坐标
dwColor:文本的颜色
strText:指向所要绘制文本的指针
清理
在删除一个CD3DFont类的对象之前,我们必须首先调用一些清理函数
Font->InvalidateDeviceObjects();
Font->DeleteDeviceObjects();
delete Font;
D3DXCreateText函数
该函数用于创建文本的3D网格,如果调用成功则返回D3D_OK
HRESULT D3DXCreateText(LPDIRECT3DDEVICE9 pDevice,HDC hDC,LPCWSTR pText,FLOAT Deviation,FLOAT Extrusion,LPD3DXMESH* ppMesh,LPD3DXBUFFER* ppAdjacency,LPGLYPHMETRICSFLOAT pGlyphMetrics
);
pDevice:指向与网格相关的设备
hDC:一个设备环境句柄,它包含了我们将用来创建网格的字体的相关信息
pText:指向确定所要用于生成文本的字符串的指针
Deviation:TrueType字体轮廓的最大弦偏差,该值必须为非负,弦偏差等于原始字体的一个设计单位
Extrusion:沿z轴负方向度量的字体深度
ppMesh:返回所创建的网格
ppAdjacency:返回所创建的网格的邻接信息,如果不需要该值,请指定为NULL
pGlyghMetrics:指向LPGLYPHMETRICSFLOAT类型结构数组的指针,该结构包含了字形和度量数据,如果不关心字形的度量数据,可将该值设为0
HDC hdc = CreateCompatibleDC(0);
HFONT hFont;
HFONT hFontOld;LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
lf.lfHeight = 25;
lf.lfWidth = 12;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = 500;
lf.lfItalic = false;
lf.lfUnderline = false;
lf.lfStrikeOut = false;
lf.lfCharSet = DEFAULT_CHARSET;
lf.lfOutPrecision = 0;
lf.lfClipPrecision = 0;
lf.lfQuality = 0;
lf.lfPitchAndFamily = 0;
wcscpy(lf.lfFaceName, L"Time New Roman");hFont = CreateFontIndirect(&lf);
hFontOld = (HFONT)SelectObject(hdc, hFont);D3DXCreateText(Device, hdc, L"Direct3D", 0.001f, 0.4f, &Text, 0, 0);SelectObject(hdc, hFontOld);
DeleteObject(hFont);
DeleteDC(hdc);TEXT->DrawSubset(0);
相关文章:
Direct3D字体
D3DX库提供接口ID3DXFont用于在Direct3D应用程序中绘制文本,该接口内部使用GDI(图形设备接口)来绘制文本,因此该接口在性能上略有损失,由于使用GDI所以才能够处理一些复杂的字体和格式。可以用D3DXCreateFontIndirect函数来创建一个ID3DXFont…...
麒麟软件操作系统下载
银河麒麟高级服务器操作系统V10(鲲鹏版): https://distro-images.kylinos.cn:8802/web_pungi/download/share/yYdlHoRzAre1mFPK9s3NviID4Lg5w6MW/ 银河麒麟高级服务器操作系统V10(飞腾版): https://dist…...

ARM---实现1-100求和任务
.text .globl _start_start:mov r0, #0x1mov r1, #0x1 给r1加一固定1不变mov r2, #0x64 100判断bl sumcmp r1, r2 sum:addcc r1, r1,#0x1 r1自增addcc r0, r0, r1 r0求和movcc pc,lrstop:b stop.end...

Vue+Three.js实现三维管道可视化及流动模拟续集
继上一篇文章中实现了三维管道的可视化和流动模拟,经过反馈,对大家还是有一定帮助,因此就编写了一个续集,相当于增加了一些常见的通用共性功能,主要在前面的基础上增加了以下功能:1.新增直角拐弯的管道,工业中很多管道都是横平竖直的,相当于我们装修的水管或电线等,不…...

基于Xilinx UltraScale+ MPSOC(ZU9EG/ZU15EG)的高性能PCIe数据预处理平台
PCIE707是一款基于PCIE总线架构的高性能数据预处理FMC载板,板卡具有1个FMC(HPC)接口,1路PCIe x4主机接口、1个RJ45千兆以太网口、2个QSFP 40G光纤接口。板卡采用Xilinx的高性能UltraScale MPSOC系列FPGA作为实时处理器,…...

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建
一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。 ##输入df -lh /dev/sd*命令,敲回车键 ~$ df -lh /dev/sd* 2.将TF卡接入到ubuntu,再次使…...

去哪里找图标?
2023年9月27日,周三下午 为了准备软件工程的期末项目,我需要找给项目找一些图标 目录 1、iconfont 2、material-design-icons 3、Font-Awesome 4、feather 5、Bootstrap 官方图标库 1、iconfont iconfont-阿里巴巴矢量图标库 这个需要注册&…...
Js数组去重都有哪些方法?
1. indexOf 定义: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。注意:iindexOf() 方法区分大小写。语法: string.indexOf(searchvalue,start)//;searchvalue必需。searchvalue可选…...
Vue简单使用
1.Vue使用环境 安装nodejs,新版nodejs集成npm;使用node -v和npm -v验证是否安装成功 修改npm镜像为淘宝npm镜像,然后使用cnpm指令代替npm npm install -g cnpm --registryhttp://registry.npm.taobao.org插件安装 Vetur Vue智能提示...
2309C++nlohmann数格示例2
JSON指针和JSON补丁 该库支持JSON指针(RFC6901)来处理结构化值.而,JSONPatch(RFC6902)允许描述两个JSON值之间的差异,有效地允许Unix已知的补丁和差异操作. //一个JSON值 json j_original R"({"baz": ["one", "two", "three"]…...
企业沟通平台私有部署,让沟通更高效数据更安全
在现代企业中,高效的内部沟通对于保持团队合作、提升工作效率至关重要。而企业沟通平台私有部署则成为了越来越多企业的选择,以满足数据安全性、合规性以及定制化需求。WorkPlus 作为领先品牌,提供高质量的企业沟通平台私有部署解决方案&…...

Java流的体系结构(一)
文章目录 一、文件读写操作FileReader和FileWriter1.main()2.FileReader1.说明:2.代码案例 3.对read()操作升级:使用read的重载方法4.FileWriter的使用1.说明2.代码 4.FileReader和FileWriter综合使用 二、使用步骤1.引入库 二、测试FileInputStream和Fi…...

什么是Redux?它的核心概念有哪些?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是Redux?⭐ 它的核心概念有哪些?⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发…...

细胞机器人系统中的群体智能
摘要 细胞机器人系统具有“智能”行为能力。本文分析了这种智能的含义。本文根据上述不可思议智能行为的不可预测性来定义机器人智能和机器人系统智能。对不可预测性概念的分析与(1)统计不可预测、(2)不可访问、(3&am…...

【办公自动化】用Python将PDF文件转存为图片(文末送书)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

不容易解的题9.26
想编写这一版,是因为之前复习字符串或者双指针等其他栏目时候没有写文章,但是现在回过头来刷,所以想着写一篇,我在leetcode的收藏夹里收藏了一些我自认为需要多加练习的题目,它们并非是很难的,极不易理解的…...

易点易动固定资产管理系统:精准管理与科学采购,降本增效的利器
在现代企业管理中,固定资产的精准管理和科学采购已成为提升企业效率和降低成本的重要环节。为了满足企业管理的需求,我们自豪地介绍易点易动固定资产管理系统,这是一款功能强大的软件解决方案,旨在帮助企业实现固定资产的精准管理…...
人大金仓分析型数据库外部表(二)
外部表错误数据 默认情况下,如果外部表数据中包含有一个错误,命令就会失败并且不会有数据被载入到目标数据库表中。gpfdist 文件服务器使用 HTTP 协议。使用 LIMIT的外部表查询会在检索到所需的 行后结束连接,导致一个HTTP 套接字错误。 如…...

rtp流广播吸顶喇叭网络有源吸顶喇叭
SIP-7043 rtp流广播吸顶喇叭网络有源吸顶喇叭 一、描述 SIP-7043是我司的一款SIP网络有源吸顶喇叭,具有10/100M以太网接口,内置有一个高品质扬声器,将网络音源通过自带的功放和喇叭输出播放,可达到功率20W。SIP-7043作为SIP系统的…...

Spring学习笔记12 面向切面编程AOP
Spring学习笔记11 GoF代理模式_biubiubiu0706的博客-CSDN博客 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程. AOP是对OOP的补充延申.底层使用动态代理实现. Spring的AOP使用的动态代理是:JDK动态代理_CGLIB动态代理技术.Spring在这两种动态代理中灵活切换.如…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...