WinAPI: DrawTextEx - 多功能文本绘制 Delphi需要把&替换成&&才可以
2015-09-14 18:50
701 查看
Delphi默认使用:DT_NOPREFIX procedure TCanvas.TextRect(var Rect: TRect; var Text: string; TextFormat: TTextFormat = []); const cTextFormats: array[TTextFormats] of Integer = (DT_BOTTOM, DT_CALCRECT, DT_CENTER, DT_EDITCONTROL, DT_END_ELLIPSIS, DT_PATH_ELLIPSIS, DT_EXPANDTABS, DT_EXTERNALLEADING, DT_LEFT, DT_MODIFYSTRING, DT_NOCLIP, DT_NOPREFIX, DT_RIGHT, DT_RTLREADING, DT_SINGLELINE, DT_TOP, DT_VCENTER, DT_WORDBREAK); var Format: Integer; F: TTextFormats; begin Format := 0; for F := Low(TTextFormats) to High(TTextFormats) do if F in TextFormat then Format := Format or cTextFormats[F]; DrawTextEx(Handle, PChar(Text), Length(Text), Rect, Format, nil); if tfModifyString in TextFormat then SetLength(Text, StrLen(PChar(Text))); end; //声明: 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 record cbSize: UINT; {结构大小} iTabLength: Integer; {TAB 占位大小, 以字符平均宽度为单位} iLeftMargin: Integer; {左边距, 以字符平均宽度为单位} iRightMargin: Integer; {右边距, 以字符平均宽度为单位} uiLengthDrawn: UINT; {返回 DrawTextEx 函数绘制的字符个数, 包括空格} end; |
相关文章推荐
- delphi完美经典-第16章 Delphi数据库程序设计----使用BDE组件
- 图表制作工具TeeChart Pro VCL v2015.16发布【附下载】
- Delphi XE10 精简 支持 Android 、 IOS 跨平台开发
- Delphi 实现检测线程类TThread是否结束
- DELPHI线程例子-FC
- 用DELPHI工具编制开发生成二维条码
- Delphi调用C#写的webservice
- Delphi pointer
- Delphi XE7,C++ Builder XE7,RAD Studio XE7 v21.0.17017.3725(With Update 1) 官方下载激活
- Delphi XE6,C++ Builder XE6,RAD Studio XE6 v20.0.16277.1276(With Update 1) 官方下载激活
- Delphi XE5,C++ Builder XE5,RAD Studio XE5 v19.0.14356.6604(With Update 2) 官方下载激活
- Delphi 学习笔记(2015.09.12)
- Delphi 学习笔记(2015.09.12)
- Delphi和JAVA用UTF-8编码进行Socket通信例子
- Delphi XE4,C++ Builder XE4,RAD Studio XE4 v18.0.4905.60485(With Update 1) 官方下载激活
- Delphi XE 5 移动开发入门手册(完整版)
- Delphi XE3,C++ Builder XE3,RAD Studio XE3 v17.0.4770.56661(With Update 2) 官方下载激活
- Delphi 7下使用Log4Delphi 0.8日志组件
- Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)
- Delphi XE2,C++ Builder XE2,RAD Studio XE2 v16.0.4504.48759(With Update 4) 官方下载激活