MFC:文本可视化输出

文章目录

  • 1. DrawText:
  • 2. TextOut:
  • 3. SetTextColor:
  • 4. SetBkColor:
  • 5. GetTextMetrics:

在MFC(Microsoft Foundation Classes)中,CDC(设备上下文类)提供了多种函数来输出文本。CDC类几乎封装了所有的Windows GDI(图形设备接口)函数,用于处理文本输出、处理字体等。

以下是一些常用的CDC中用于输出文本的函数及其描述:

1. DrawText:

这个函数用于在给定的矩形内格式化文本,并可以选择文本的对齐方式。它可以根据指定的格式类型(如左对齐、右对齐或居中)来断行以适应给定的矩形。

virtual int DrawText(LPCTSTR lpszString,  // 指向要绘制的文本的指针int     nCount,      // 字符串中的字符数LPRECT  lpRect,      // 指向矩形结构的指针UINT    nFormat      // 格式化选项
);

nFormat用来指定文本的对齐方式、换行方式、文本输出模式等。以下是一些常用的文本绘制格式选项:

  • 对齐方式:
    DT_CENTER:文本在矩形中水平居中。
    DT_LEFT:文本在矩形中左对齐。
    DT_RIGHT:文本在矩形中右对齐。
    DT_VCENTER:文本在矩形中垂直居中1。
    DT_TOP:文本在矩形顶部对齐(垂直方向)。
    DT_BOTTOM:文本在矩形底部对齐(垂直方向)。
  • 换行方式:
    DT_SINGLELINE:文本单行显示,不会换行。即使文本超出矩形宽度,也会被截断1。
    DT_WORDBREAK:在单词边界处换行。如果文本包含多个单词并且超出矩形宽度,则会在单词边界处断开并在下一行继续1。
    DT_WORDELLIPSIS:如果文本超出矩形,则在最后一个完整单词后添加省略号(…)。
    DT_PATH_ELLIPSIS:如果文本超出矩形,则在路径字符串的中间添加省略号(…)。
  • 文本输出模式:
    DT_CALCRECT:不绘制文本,但计算输出文本的矩形大小2。
    DT_EDITCONTROL:模拟编辑控件中的文本显示方式。
    DT_EXPANDTABS:将制表符(Tab)扩展为空格。
    DT_EXTERNALLEADING:在行之间添加额外的空间(仅对具有外部字体的文本有效)。
  • 其他选项:
    DT_NOPREFIX:忽略文本中的任何前缀字符(如&)。
    DT_END_ELLIPSIS:如果文本超出矩形,则在文本的末尾添加省略号(…)。
    DT_MODIFYSTRING:修改传入的文本字符串以适合矩形(通常与DT_END_ELLIPSIS或DT_PATH_ELLIPSIS一起使用)。
    请注意,这些选项可以通过按位或(OR)运算符组合使用,以在DrawText函数中指定多个选项。例如,DT_CENTER | DT_VCENTER将文本在矩形中水平和垂直居中

2. TextOut:

这个函数用于在给定的位置输出一个文本字符串。

BOOL TextOut(int x,               // 文本起点的x坐标int y,               // 文本起点的y坐标LPCTSTR lpszString,  // 指向要绘制的文本的指针int nCount           // 字符串中的字符数
);

注意:在MFC中,通常不需要指定nCount,因为字符串通常是以null终止的。

在MFC(Microsoft Foundation Classes)中,DrawTextA是DrawText函数的ANSI版本。当处理ANSI(American National Standards Institute,美国国家标准协会)字符串时,应该使用DrawTextA;而处理Unicode字符串时,应该使用DrawTextW。但在大多数情况下,由于MFC和Windows API的Unicode支持,开发人员会直接使用DrawText,它会自动映射到相应的Unicode或ANSI版本,具体取决于项目的字符集设置

3. SetTextColor:

这个函数用于设置文本的颜色34。

COLORREF SetTextColor(COLORREF crColor   // 新的文本颜色
);

4. SetBkColor:

这个函数用于设置文本的背景颜色(虽然DrawText函数本身并不直接设置背景色,但CDC类有这个函数)。

COLORREF SetBkColor(COLORREF crColor   // 新的背景颜色
);

5. GetTextMetrics:

这个函数用于获取当前字体的度量信息,例如字符的平均高度等,这在确定文本输出的位置时非常有用。

BOOL GetTextMetrics(LPTEXTMETRIC lptm   // 指向TEXTMETRIC结构的指针
);

在使用这些函数时,通常会先设置文本的颜色、字体等属性,然后调用输出函数在指定的位置绘制文本。完成文本绘制后,如果更改了字体或其他资源,建议恢复到原始设置以避免资源泄露或意外的视觉效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Barabási–Albert模型详解与Python代码示例

Barabsi–Albert模型详解与Python代码示例 模型介绍 Barabsi–Albert(BA)模型是一种用于模拟和分析复杂网络结构的数学模型,特别适用于描述那些具有“无标度”特性的网络。无标度网络是指网络中节点的连接度(度)分布…

xlive.dll丢失怎么办,xlive.dll文件的主要用途

xlive.dll丢失怎么办?目前是有很多方法可以解决这个xlive.dll丢失的问题的,只要你仔细的去了解xlive.dll这个文件,至于使用哪种方法,主要还是看你的实际情况,因为情况不同选择使用的方法也是不一样的,下面一…

底软驱动 | Linux虚拟内存

为了更有效的管理内存并且少出错,现代操作系统提供了一种对主存的抽象概念,叫做虚拟内存(VM)。虚拟内存提供了三个重要的能力: 1.它将主存(物理内存)看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保留活动区域,并且根据…

去除重复数字

1083. 【基础】去除重复数字 [ 刷题2路4线 ] 时间限制: 1000MS 空间限制: 16MB 结果评判: 文本对比 正确/提交: 29 (21) / 45 官方标签: 数组 普及- 题目描述 给你N个数(n<=100),每个数都在&am…

openEuler 安装 podman 和 podman compose

在 openEuler 22.03 LTS SP4 中,你可以使用 dnf 包管理器来安装 Podman 和 Podman Compose。openEuler 默认使用 dnf 作为包管理器,所以这是安装软件的首选方式。 关于 openEuler 22.03 LTS SP4 下载地址: https://www.openeuler.org/zh/dow…

【256 Days】我的创作纪念日

目录 🌼01 机缘 🌼02 收获 🌼03 日常 🌼04 成就 🌼05 憧憬 最近收到官方来信, 突然发现,不知不觉间,距离发布的第一篇博客已过256天,这期间我经历了春秋招、毕业答辩…

JS【详解】ES6 模块规范 vs CommonJS 模块规范

每个 js 文件都是一个模块,默认采用的 CommonJS 模块规范 新兴的 ES6 模块 pk 传统的 CommonJS 模块 特性CommonJSES6 模块化导出exports 对象export 关键字导入require()函数import 关键字加载模式同步异步执行模式单例单例依赖关系静态动态树形摇晃不支持支持 加…

板级调试小助手(3)基于PYNQ的OLED视频显示

一、前言 在之前的文章中介绍了《板级调试小助手》的系统结构和DDS自定义外设的搭建。这篇文章主要介绍一下如何在PYNQ中驱动平时长剑的OLED12864显示屏,并显示BadApple(毕竟有屏幕的地方就要有BadApple)。效果如下: BadApple 本项…

Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决办法

在Spring配置数据源时,当使用Spring容器加载druid.properties数据库连接池配置文件时,容易碰到create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/mydbs, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user …

破解YouTube限制:保姆级教程,轻松查看博主邮箱

近期YouTube取消了博主的邮箱展示,这造成了不小的轰动,给想要联系博主的粉丝和想要寻求网红合作的品牌都带来了极大的不便。但这难不倒万能的网友!最新发现,通过一串神秘代码可以在YouTube上查看到博主的邮箱,这里Nox聚…

Java进阶----多态

多态 什么是多态 在继承父类或者实现接口的基础上,允许同一类事物出现不同的状态 多态的前提:继承或实现的关系、方法的重写、父类(接口)引用指向子类(实现类)对象 表现形式 父类 变量 子类对象(); 接…

解决方案架构师系列 - AWS - AWS Amplify 服务功能介绍

探索AWS Amplify:构建高效、安全的云原生应用 AWS Amplify 是一个开源框架,由亚马逊网络服务(AWS)提供,旨在简化Web和移动应用程序的开发。它是一套完整的开发工具集合,帮助开发者快速地实现功能如身份验证…

CycleGAN深度学习项目

远程仓库 leftthomas/CycleGAN: A PyTorch implementation of CycleGAN based on ICCV 2017 paper "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks" (github.com) 运行准备 Anaconda 安装需要的库 指令 pip install panda…

LPRNet 车牌识别部署 rk3588(pt-onnx-rknn)包含各个步骤完整代码

虽然车牌识别技术很成熟了,但完全没有接触过。一直想搞一下、整一下、试一下、折腾一下,工作之余找了一个简单的例子入个门。本博客简单记录一下 LPRNet 车牌识别部署 rk3588流程,训练参考 LPRNet 官方代码。 1、导出onnx   导出onnx很容易…

昇思25天打卡营-mindspore-ML- Day24-基于 MindSpore 实现 BERT 对话情绪识别

学习笔记:基于MindSpore实现BERT对话情绪识别 算法原理 BERT(Bidirectional Encoder Representations from Transformers)是由Google于2018年开发的一种预训练语言表示模型。BERT的核心原理是通过在大量文本上预训练深度双向表示&#xff0…

Win7电脑修改网卡配置连接千兆网络的方法

Win7电脑修改网卡配置连接千兆网络的方法 Realtek PCIe GBE Family Controller是千兆网卡,GBE的意思就是1Gbps网卡,也就是千兆网卡,翻译成中文就是瑞昱PCI-E总线千兆网络系列控制器。 目前有很多的电脑都是使用realtek网卡的,当时奇怪的是网卡连接到h3或者d-link千兆交换机…

探索老年综合评估实训室的功能与价值

一、引言 随着人口老龄化的加剧,老年健康问题日益受到关注。老年综合评估实训室作为专门为老年人健康服务而设立的场所,具有独特的功能和重要的价值。 二、老年综合评估实训室的功能 (一)健康评估功能 1、身体功能评估 通过专业设…

【postgresql】权限(Privileges)

权限(privileges)是决定用户或角色可以对数据库对象(如表、视图、序列和函数)执行哪些操作的许可。权限对于维护安全性和控制对数据的访问至关重要。 权限分类 在 PostgreSQL 中,权限分为以下几种: SELEC…

数据库基本查询(表的增删查改)

一、增加 1、添加信息 insert 语法 insert into table_name (列名) values (列数据1,列数据2,列数据3...) 若插入时主键或唯一键冲突就无法插入。 但如果我们就是要修改一列信息也可以用insert insert into table_name (列名) values (列数据1&am…

客户端通过服务器进行TCP通信(三)

一. 对TCP的基础讲解 服务端 1. 首先创建一个套接字,TCP是面向字节流的套接字,故需要使用SOCK_STREAM 2. 然后使用bind()函数将套接字与服务器地址关联(如果是在本地测试,直接将地址设置为217.0.0.1或者localhost,端口号为1000…