WinAPI: DrawTextEx - 多功能文本绘制

2024-05-26 22:08

本文主要是介绍WinAPI: DrawTextEx - 多功能文本绘制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//声明:
DrawTextEx(DC: HDC;                  {设备句柄}lpchText: PChar;          {文本}cchText: Integer;         {要绘制的字符个数; -1 表示全部}var p4: TRect;            {矩形结构}dwDTFormat: UINT;         {选项}DTParams: PDrawTextParams {附加参数, 指向一个 DRAWTEXTPARAMS 结构}
): Integer;                 {返回文本高度}//dwDTFormat 参数的可选值:
DT_TOP             = 0;         {顶对齐, 须 or DT_SINGLELINE}
DT_LEFT            = 0;         {左对齐}
DT_CENTER          = 1;         {水平居中}
DT_RIGHT           = 2;         {右对齐}
DT_VCENTER         = 4;         {垂直居中, 须 or DT_SINGLELINE}
DT_BOTTOM          = 8;         {底对齐, 须 or DT_SINGLELINE}
DT_WORDBREAK       = $10;       {给超出边界的单词换行; 如果 SetTextAlign 函数设置了 TA_UPDATECP, 这里的设置无效}
DT_SINGLELINE      = $20;       {单行文本}
DT_EXPANDTABS      = $40;       {扩展制表符, 默认制表跨 8 个字符}
DT_TABSTOP         = $80;       {TAB 后添加的字符数}
DT_NOCLIP          = $100;      {使文本不限制在指定的矩形内}
DT_EXTERNALLEADING = $200;      {返回的高度包括字体的外部行距}
DT_CALCRECT        = $400;      {自动检测容纳文本的矩形的高度和宽度, 并返回高度, 但文本不被绘制}
DT_NOPREFIX        = $800;      {不处理前缀字符(&); 默认时, & 后的字符会被添加下划线}
DT_INTERNAL        = $1000;     {用系统字体来计算文本高度}
DT_HIDEPREFIX      = $00100000; {隐藏下划线}
DT_PREFIXONLY      = $00200000; {将 & 解释为前缀}
DT_EDITCONTROL     = $2000;     {如果最后一行只是部分可见, 将不被绘制}
DT_PATH_ELLIPSIS   = $4000;     {文本过长时, 中间使用 ... 会尽量保留最后一个 \ 后面的字符}
DT_END_ELLIPSIS    = $8000;     {文本过长时, 尾部使用 ...}
DT_MODIFYSTRING    = $10000;    {省略显示, 只与 DT_PATH_ELLIPSIS、DT_END_ELLIPSIS 联合使用}
DT_RTLREADING      = $20000;    {从右到左绘制文本, 只用于相应语种}
DT_WORD_ELLIPSIS   = $40000;    {截短不符合矩形的正文, 并增加椭圆}//DRAWTEXTPARAMS 结构是 tagDRAWTEXTPARAMS 的重定义:
tagDRAWTEXTPARAMS = packed recordcbSize: UINT;          {结构大小}iTabLength: Integer;   {TAB 占位大小, 以字符平均宽度为单位}iLeftMargin: Integer;  {左边距, 以字符平均宽度为单位}iRightMargin: Integer; {右边距, 以字符平均宽度为单位}uiLengthDrawn: UINT;   {返回 DrawTextEx 函数绘制的字符个数, 包括空格}
end;
//例1: procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); varMyRect: TRect;str: string; beginMyRect.Left  := X;MyRect.Top    := Y;MyRect.Right  := X + 200;MyRect.Bottom := Y + 200;str := Application.ExeName;DrawTextEx(Canvas.Handle,PChar(str),-1,MyRect,DT_MODIFYSTRING or DT_END_ELLIPSIS,nil); end;
//效果图:

//例2:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
varMyRect: TRect;str: string;
beginMyRect.Left   := X;MyRect.Top    := Y;MyRect.Right  := X + 200;MyRect.Bottom := Y + 200;str := Application.ExeName;DrawTextEx(Canvas.Handle,PChar(str),-1,MyRect,DT_MODIFYSTRING or DT_PATH_ELLIPSIS,nil);
end;
//效果图:

这篇关于WinAPI: DrawTextEx - 多功能文本绘制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005724

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib