龙书笔记(9)

2023-11-04

chap 9 字体
生成和输出文本的3种方式:ID3DXFont, CD3DFont, D3DXCreateText

1.ID3DXFont接口
能处理一些复杂的字体和格式,但是速度略慢
		//创建ID3DXFont对象
		D3DXFONT_DESC df;
		ZeroMemory(&df, sizeof(D3DXFONT_DESC));
		df.Height = 25;
		df.Width  = 12;
		df.Weight = 500;
		df.MipLevels = D3DX_DEFAULT;
		df.Italic = false;
		df.CharSet = DEFAULT_CHARSET;
		df.OutputPrecision = 0;
		df.Quality = 0;
		df.PitchAndFamily = 0;
		strcpy(df.FaceName, "Times New Roman");
		
		ID3DXFont * font = 0;
		D3DXCreateFontIndirect(Device, &df, &font);
		//用DrawText绘制
		Font->DrawText(NULL, "Hello, world!", -1, &rect, DT_TOP | DT_LEFT, 0xff000000);
		/*
			注意:在这个例子的代码里面,有两个问题:
			(1)D3DXCreateFontIndirect不能正常使用,具体原因不明,但是可以用他的”兄弟“版本:D3DXCreateFont,
				这个版本直接把所有参数添加进来,而不像D3DXCreateFontIndirect要借用一个D3DXFONT_DESC结构.
				eg:
				    ID3DXFont * Font = 0;
					D3DXCreateFont(Device,25,12,FW_BOLD,1,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,TEXT("System"),&Font);
					Font->DrawText(NULL, FPRSString, -1, &rect, DT_TOP | DT_LEFT, 0xffff0000);
			(2)在display里面DrawText方法使用的时候少了一个NULL的参数,所以老是报错
			在修改了这两个位置后,程序才能正常运行...
		*/


2.计算每秒绘制的帧数
		DWORD FrameCnt = 0;
		float TimeElapsed = 0;
		float FPS = 0;
		
		void CalcFPS(float timeDelta)
		{
			FrameCnt++;
			TimeElapsed += timeDelta;
			if(TimeElapsed >= 1.0f)
			{
				FPS = (float)FrameCnt/TimeElapsed;
				TimeElapsed = 0.0f;
				FrameCnt = 0;
			}
		}


3.CD3DFont类
速度块,但是处理的字体较简单
		//创建
		Font = new CD3DFont("Times News Roman", 16, 0);
		Font->InitDeviceObject(Device);
		Font->RestoreDeviceObjects();
		//绘制
		Font->DrawText(20,20,0xff000000, "Hello World!");
		//清理(这部分写在了Cleanup中)
		Font->InvalidateDeviceObjects();
		Font->DeleteDeviceObjects();
		delete Font;
		//要使用这个方法必须用一个已定义好的CD3DFont类


4.D3DXCreateText函数
创建文字网格

		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 = DEFAlUT_CHARSET;
		lf.lfOutPrecision   = 0;              
		lf.lfClipPrecision  = 0;          
		lf.lfQuality        = 0;           
		lf.lfPitchAndFamily = 0;    
		strcpy(lf.lfFaceName, "Times New Roman");		// font style
		
		// Create the font and select it with the device context.
		hFont = CreateFontIndirect(&lf);
		hFontOld = (HFONT)SelectObject(hdc, hFont); 
		// Create the text mesh based on the selected font in the HDC.
		D3DXCreateText(Device, hdc, "Direct3D", 
			0.001f, 0.4f, &Text, 0, 0);
		// Restore the old font and free the acquired HDC.
		SelectObject(hdc, hFontOld);
		DeleteObject( hFont );
		DeleteDC( hdc );


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

龙书笔记(9) 的相关文章

  • 计算机的配件知识,组装一台电脑需要哪些配件 DIY装机必看的电脑硬件知识详解 (全文)...

    组装电脑是指用户可以按照自己的预算和用途来 在兼容的基础上 灵活搭配电脑硬件 又称为DIY组装电脑 DIY攒机等 由于灵活 高性价比 按需搭配等特性 是不少台式电脑主流方案之选 那么组装一台电脑需要哪些配件 下面 电脑爱好者 分享一下DIY
  • MinIO 对象存储(可以当作免费的图床)

    什么是Minlo MinIO与传统的存储和其他的对象存储不同的是 特征 一 快速入门 1 下载直接去官网 2 新建minio安装目录 执行如下命令 3 后台启动 4 查看状态 二 进行访问 并设置桶 1 访问 三 springboot进行实
  • Java中类数组,创建后使用set函数,报NullPointerException空指针异常

    最近从新学习数组发现了一些问题 先创建一个Person类 public class Person private String name private int age public Person String name int age t
  • 线程状态是五种对?还是六种对?

    五种 线程在一定条件下 状态会发生变化 线程一共有以下几种状态 1 新建状态 New 新创建了一个线程对象 2 就绪状态 Runnable 线程对象创建后 其他线程调用了该对象的start 方法 该状态的线程位于 可运行线程池 中 变得可运
  • 推荐系统系列——推荐系统简介

    目录 演化关系图 推荐系统简介 什么是推荐系统 为什么需要推荐系统 如何构建推荐系统 推荐系统的步骤 常用评测指标 召回与排序 召回层与排序层的特点 多路召回 使用Embedding做召回 A B测试 为什么需要A B测试 A B测试的流程
  • 基于神经回路的靶向治疗的未来

    以靶向大脑回路为原则的治疗方法 随着诸如经颅磁刺激 TMS 深部脑刺激 DBS 和聚焦超声 FUS 等脑刺激治疗的发展 逐渐引起了广泛关注 这些技术可以有效治疗不同的神经精神疾病 但治疗特定疾病取决于选择合适的治疗目标 在这里 我们提出了一
  • 删除type报ORA-02303错误

    drop type result type 时 报错ORA 02303 无法使用类型或表的相关性来删除或取代一个类型 drop type result type array 时报错 对象不存在 CREATE OR REPLACE TYPE
  • 练习敲代码速度

    2023年9月18日 周一晚上 今晚不想学习 但又不想玩游戏 于是找了一些练习敲代码的网站来玩玩 顺便练习一下敲代码的速度 目录 参考资料 个人推荐 第一个 第二个 第三个 参考资料 电脑打字慢 有哪些比较好的练打字软件 知乎 https
  • C#——Lambda 表达式

    C Lambda 表达式 Lambda 表达式 是采用以下任意一种形式的表达式 表达式 lambda 表达式为其主体 input parameters gt expression 语句 lambda 语句块作为其主体 input param
  • 分布式相关论文

    想从事分布式系统 计算 hadoop等方面 需要哪些基础 推荐哪些书籍 转自知乎 作者 廖君 链接 https www zhihu com question 19868791 answer 88873783 来源 知乎 分布式系统 Dist
  • 线性代数学习之正交性,标准正交矩阵和投影

    正交基和标准正交基 前言 经过上一次线性代数学习之向量空间 维度 和四大子空间的学习 对于空间的概念已经有了非常深刻的认识了 而描述空间很重要的方式除了维度以外 那就是空间的基了 而如小标题所示就是跟空间的基相关 所以先来回忆一下空间基的相
  • autojs获取最近创建的媒体文件,获取本机音频视频图片文件脚本源码,翻译自java

    说明 本文提供的代码仅供参考 不建议用于生产环境 可能有些地方在最新版本的Auto js上面需要做修改 才能运行 Auto js简介 Auto js是利用安卓系统的 辅助功能 实现类似于按键精灵一样 可以通过代码模拟一系列界面动作的辅助工作
  • 宋人千首绝句【全十卷】

    千首宋人绝句 是清代严长明编辑的书籍 全书共十卷 分七言 五言 六言三部分 其中七言七卷 五言两卷 六言一卷 且按帝王 后妃 宫掖 宗室 降王 宋臣 闺媛等分类 收录有王安石 苏轼 黄庭坚 秦观 陆游 杨万里 范成大等著名诗人的六言绝句 编
  • 看了一次strongswan ipsec的设置.

    看了一次strongswan ipsec的设置 这次的设置要求是 Linux 中 strongwans与hillstone防火墙 stoneOS 建立ipsec连接 network network进行通信 要求Linux可以同时与多台防火墙
  • 从2018年以太坊统计数据看区块链发展趋势

    今年6月 我们发布了 以太坊网络状态 重点介绍了整个网络的一些关键数据和统计数据 六个月后 即将在2018年结束时 我们处于长期 加密货币冬天 的尾声 2017年末至今的市场波动已经引起了区块链行业的普遍关注 然而 仔细研究这些数字可以发现
  • Python实现根据磁盘剩余空间对磁盘多次写入和擦除

    实现根据磁盘剩余容量 对剩余容量 预留了1GB 进行多次的写入和删除数据 次数为变量counts 每次写入1GB的数据 即变量data 多次操作 以实现上述功能 通过更改taskTimes变量可以多次写入和删除 from datetime
  • 基于STM32的智能电子秤设计

    硬件设计 本设计是一款基于STM32单片机的电子秤系统 随着科学技术的不断发展 传统的机械秤逐渐被电子秤所取代 相比于计量不精确 费时费力的机械秤 电子秤采用在方便快捷的同时 又保证了结果的准确性 本次设计采用STM32单片机作为处理器 控
  • 03智慧安防

    一张图读懂一个产业之智慧安防 自2015年起 安防行业逐渐引入人工智能技术 智慧安防 一词开始进入大众视野 伴随着政府 平安城市 天网工程 雪亮工程 等项目不断推出 智慧安防快速成为智慧城市应用中落地情况较好 技术与服务相对成熟的领域之一
  • java 实现部门树_Java实现部门模块开发

    一 新增部门接口开发 1 1 DeptParam java 1 2 LevelUtils java 1 4 1 导入 commons lang3 依赖包 1 2 2 实现LevelUtils开发 1 3 在 com yuluomoshang
  • 物联网设备获取北京时间、年月日、星期几,GMT格林威治标准时间转换为北京时间,授时api Fiddler抓包调试

    1 获取北京时间 年月日 授时api 苏宁获取北京时间的api不要太方便 http quan suning com getSysTime do 使用 Fiddler抓包调试 查看HTTP返回报文 双击左侧抓取到的HTTP返回报文 使用 Sy

随机推荐

  • 同步异步BUCK研究

    目录 一 同步时钟 二 异步BUCK电路 1 基本公式推导 2 电感选型计算 三 同步BUCK电路 四 同步异步BUCK电路对比 前言 在硬件设计中 电源模块基本都会接触到 DC DC拓扑电路又是最常见的 所以深入理解DC DC电路至关重要
  • 轻松成为设计高手

    目录 2 Verilog语言基础 2 1 三种描述方法 2 Verilog语言基础 2 1 三种描述方法 1 数据流描述 assign连续赋值语句 2 行为描述 过程赋值语句 always和initial过程块 3 结构化描述 实例化已有的
  • 微服务(SpringCloud)

    1 什么是微服务 将一个大项目中各个业务代码进行拆分 拆分成多个互不相干小项目 每个项目完成自己特有的功能 而且可以通过调用别的项目完成整体功能 2 SpringCloud 是由Spring提供的一套能够快速搭建微服务框架程序的框架集 也被
  • WEB漏洞测试(二)——HTML注入 & XSS攻击

    上一篇介绍了我们安装BWAPP来完成我们的漏洞测试 在BWAPP中 将HTML Injection和XSS做了非常详细的分类 那么为什么要将两个一起讲呢 归根结底 我觉得这两个分明是一个玩意 充其量是攻击的方式不一样 我们先来介绍一下这两种
  • Electron入门应用打包exe(windows)

    最近在学习nodejs 得知Electron是通过将Chromium和Node js合并到同一个运行时环境中 用HTML CSS和JavaScript来构建跨平台桌面应用程序的一门技术 对于之前一直从事flash AIR桌面应用开发的我迫不
  • 【网络】交换机 VLAN 网关 路由器

    网关 含义 网间连接器 协议转换器 在传输层上实现网络互连 PS 二层交换机在链路层 路由 三层交换机在网络层 集线器 中继器在物理层 是最复杂的网络互联设备 仅用于两个高层协议不同的网络互连 网关有很多种 最常用的是TCP IP协议里的网
  • DDoS攻击原理及防御

    转自 微点阅读 https www weidianyuedu com 随着网络时代的到来 网络安全变得越来越重要 在互联网的安全领域 DDoS Distributed DenialofService 攻击技术因为它的隐蔽性 高效性一直是网络
  • matlab自回归模型AIC,时间序列笔记-自回归模型(二)

    笔记说明 在datacamp网站上学习 Time Series with R track Introduction to Time Series Analysis 课程 做的对应笔记 学识有限 错误难免 还请不吝赐教 如无特殊说明 笔记中所
  • gcc常见编译参数介绍

    1 常见编译参数介绍 gcc可以说是个伟大的编译器集合 支持c c object c java fortran pascal ada等一大堆语言 同时支持几乎所有32位以上的cpu和部分16位 8位cpu 因此几乎所有开源操作系统 商业un
  • uniapp微信小程序 ios端部分机型屏幕可左右滑动原因即处理

    1 原因 因为部分元素超过了屏幕尺寸大小 2 处理 在超出屏幕尺寸的元素上一级使用 width 100 overflow x hidden 如果是图片导致的 则需要把多余的裁剪掉
  • ubuntu虚拟机搭建hadoop完全分布式集群

    一 需要的工具 需要的工具我已经完成分享 需要的可以直接在网盘中下载 VMware15 Workstation Pro 提取码 pp12 ubuntu16 18 19 镜像 提取码 yfj0 Xshell Xftp 提取码 6ao9 jdk
  • 7月网络学习报告

    原始代码 import torch import torch nn as nn import torch nn functional as F import torchvision from torchvision import datas
  • C++ 基础知识

    C 基础知识 一 语法 1 指针常量 常量指针 2 内存模型 3 引用 4 C 中面向对象的三大特性 5 纯虚函数和抽象类 6 文件操作 7 模板与泛型 8 STL 一 语法 1 指针常量 常量指针 指针常量 顾名思义 指针是一个常量 所以
  • 开源C/C++网络库比较 ace &&bosst &&libEvent

    ACE是一个大型的中间件产品 代码20万行左右 过于宏大 一堆的设计模式 架构了一层又一层 使用的时候 要根据情况 看你从那一层来进行使用 在开源的C C 网络库中 常用的就那么几个 在业界知名度最高的 应该是ACE了 不过是个重量级的大家
  • 盘点:计算机专业含金量最高的证书!只需一种证书在手,从此不愁

    第一种证书 计算机技术与软件专业资格考试证书 计算机技术与软件专业资格考试证书 是由国家人力资源和社会保障部 工业和信息化部领导的国家级考试 该考试分为 5 个专业类别 并分设了高 中 初级专业资格考试 共 28 个资格的考核 也是用人单位
  • 微服务设计指导-hystrix参数介绍

    连接nacos的配置 nacos 服务地址 spring cloud nacos discovery server addr nacos server addr 注册到nacos上的命名空间 spring cloud nacos disco
  • MySQL数据库基础知识11,查询缓存

    目录 一 查询缓存是什么 二 MySQL如何判断缓存命中 三 使用查询缓存需谨慎 四 如何分析和配置查询缓存 五 InnoDB和查询缓存 MySQL进阶实战系列文章 哪吒精品系列文章 一 查询缓存是什么 MySQL查询缓存保存查询返回的完整
  • 【OpenCV图像处理】1.23 直方图(Histogram)均衡化

    文章目录 相关理论 代码 展示效果 相关理论 什么是直方图 图像直方图 是指对整个图像像在灰度范围内的像素值 0 255 统计出现频率次数 据此生成的直方图 称为图像直方图 直方图 直方图反映了图像灰度的分布情况 是图像的统计学特征 直方图
  • 逆水寒紫禁之巅服务器维护,逆水寒"紫禁之巅"服务器或将成历史?王思聪、PDD时代已渐行渐远...

    原标题 逆水寒 紫禁之巅 服务器或将成历史 王思聪 PDD时代已渐行渐远 从没有一款端游 能像 逆水寒 这样 能吸引如此多的社会名流入驻游戏 在游戏开测之初 打着 五年五亿巨制 网易最后一款端游 的口号 连王思聪 秦奋等名人都纷纷入坑 逆水
  • 龙书笔记(9)

    chap 9 字体 生成和输出文本的3种方式 ID3DXFont CD3DFont D3DXCreateText 1 ID3DXFont接口 能处理一些复杂的字体和格式 但是速度略慢 创建ID3DXFont对象 D3DXFONT DESC