文档章节

GDI+ 学习记录(23): 输出文本

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 946
阅读 8
收藏 0
点赞 0
评论 0
//在矩形范围中显示文本
var
  g: TGPGraphics;
  fontFamily: TGPFontFamily;
  font: TGPFont;
  rectF: TGPRectF;
  p: TGPPen;
  sb: TGPSolidBrush;
  str: WideString;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  fontFamily:= TGPFontFamily.Create('宋体');
  font:= TGPFont.Create(fontFamily, 9, FontStyleRegular, UnitPoint);
  p := TGPPen.Create(aclRed);
  sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 0));

  rectF:= MakeRect(10.0, 10.0, 116.0, 100.0); {包含文本的矩形范围}

  str := '万一万一万一万一万一万一万一万一万一万一万一万一万一万一万一';

  g.DrawRectangle(p, rectF);
  g.DrawString(str, -1, font, rectF, nil, sb);
  {参数4不能用TGPRect,只能是TGPRectF; 参数5是文字格式对象,后面举例}

  fontFamily.Free;
  font.Free;
  p.Free;
  sb.Free;
  g.Free;
end;

 
 
 
 
 

 

 

  
//设置对齐方式 var g: TGPGraphics; str: String; fontFamily: TGPFontFamily; font: TGPFont; rectF: TGPRectF; strFormat: TGPStringFormat; sb: TGPSolidBrush; p: TGPPen; begin g := TGPGraphics.Create(Canvas.Handle); fontFamily:= TGPFontFamily.Create('Arial'); font:= TGPFont.Create(fontFamily, 12, FontStyleBold, UnitPoint); rectF:= MakeRect(30.0, 10.0, 120.0, 140.0); sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255)); strFormat:= TGPStringFormat.Create; strFormat.SetAlignment(StringAlignmentCenter); {设置左右对齐方式} strFormat.SetLineAlignment(StringAlignmentCenter); {设置垂直对齐方式} str := 'wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy'; g.DrawString(str, -1, font, rectF, strFormat, sb); p:= TGPPen.Create(MakeColor(255, 0, 0, 0)); g.DrawRectangle(p, rectF); fontFamily.Free; font.Free; strFormat.Free; sb.Free; p.Free; g.Free; end;
//使用格式化标志创建文本格式化对象 var g: TGPGraphics; str: String; fontFamily: TGPFontFamily; font: TGPFont; rectF: TGPRectF; strFormat: TGPStringFormat; sb: TGPSolidBrush; p: TGPPen; begin g := TGPGraphics.Create(Canvas.Handle); fontFamily:= TGPFontFamily.Create('Arial'); font:= TGPFont.Create(fontFamily, 12, FontStyleBold, UnitPoint); rectF:= MakeRect(30.0, 10.0, 120.0, 140.0); sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255)); strFormat:= TGPStringFormat.Create(StringFormatFlagsDirectionRightToLeft); {使用格式化标志创建文本格式化对象} str := 'wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy'; g.DrawString(str, -1, font, rectF, strFormat, sb); p:= TGPPen.Create(MakeColor(255, 0, 0, 0)); g.DrawRectangle(p, rectF); fontFamily.Free; font.Free; strFormat.Free; sb.Free; p.Free; g.Free; end;
文本对齐方式:

Delphi 微软 说明
StringAlignmentCenter  Center  指定文本在布局矩形中居中对齐。
StringAlignmentFar Far 指定文本远离布局矩形的原点位置对齐。在左到右布局中,远端位置是右。在右到左布局中,远端位置是左。
StringAlignmentNear Near 指定文本靠近布局对齐。在左到右布局中,近端位置是左。在右到左布局中,近端位置是右。


文本格式化标志:

Delphi 微软 说明
StringFormatFlagsDirectionRightToLeft DirectionRightToLeft 按从右向左的顺序显示文本。
StringFormatFlagsDirectionVertical DirectionVertical 文本垂直对齐。
StringFormatFlagsDisplayFormatControl DisplayFormatControl 控制字符(如从左到右标记)随具有代表性的标志符号一起显示在输出中。
StringFormatFlagsFitBlackBox FitBlackBox 允许部分字符延伸该字符串的布局矩形。默认情况下,将重新定位字符以避免任何延伸。
StringFormatFlagsLineLimit LineLimit 在格式化的矩形中只布置整行。默认情况下,这种布置要继续到文本的结尾为止,或者到由于剪辑而不再有可见的行为止,看哪一种情况先发生。注意,此默认设置允许不是行高整数倍的格式化矩形将最后一行部分地遮住。若要确保看到的都是整行,请指定此值,并仔细地提供格式化矩形,使其高度至少为一个行高。
StringFormatFlagsMeasureTrailingSpaces  MeasureTrailingSpaces  包括每一行结尾处的尾随空格。在默认情况下,MeasureString 方法返回的边框都将排除每一行结尾处的空格。设置此标记以便在测定时将空格包括进去。
StringFormatFlagsNoClip NoClip 允许显示标志符号的伸出部分和延伸到边框外的未换行文本。在默认情况下,延伸到边框外侧的所有文本和标志符号部分都被剪裁。
StringFormatFlagsNoFontFallback NoFontFallback 对于请求的字体中不支持的字符,禁用回退到可选字体。缺失的任何字符都用缺失标志符号的字体显示,通常是一个空的方块。
StringFormatFlagsNoWrap NoWrap 在矩形内设置格式时,禁用文本换行功能。当传递的是点而不是矩形时,或者指定的矩形行长为零时,已隐含此标记。


本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017540.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号 ⋅ 2017/11/14 ⋅ 0

win图形编程与打印驱动

最近一个项目做打印属性的二次开发,目前的情况是利用虚拟打印机服务管理打印机和打印任务。原先没有做过这种经验,把最近看的东西整理一下。 1.windows编程 鉴于原先看过Petzold的书或者有过...

im天行 ⋅ 2012/11/20 ⋅ 0

深度解读 - Windows 7核心图形架构细致分析(转贴)

原帖地址:http://technet.microsoft.com/zh-cn/library/ee921514.aspx 如现在大家所想的那样, Windows7 其实是 Windows Vista 的改进版。 Windows 7 在 Windows Vista 的基础上进行了大量的...

迈克老狼1 ⋅ 2012/12/23 ⋅ 0

GDI+图像处理学习笔记——改变图像的透明度

GDI+是WindowsXp和windows Server 2003中的一个子系统,主要用于处理系统的绘制消息。GDI+是GDI的扩展,其继承了GDI的有点并在其基础上进行了改进,包括增加了一些GDI无法绘制的图形函数,同...

晨曦之光 ⋅ 2012/05/23 ⋅ 0

ASP.NET 如何做出简单的验证码

如果说要做验证码,那不得不提的就是GDI+绘图了。我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它。 科普一下,什么是GDI+? GDI+是图形设备接口(GDI)的高...

我不会抽烟 ⋅ 2014/07/29 ⋅ 0

+++++++脚本练习之for循环和if语句使用

1、vim快捷方式 2、脚本实现创建脚本,自动生成事先定义的文件 3、脚本中实现修改文本文件。 4、/etc/rc.d/rc3.d目录下分别有多个以K开头和S开头的文件;分别读取每个文件, 以K开头的文件输出...

余二五 ⋅ 2017/11/09 ⋅ 0

VC 6.0 配置和使用gdi+

GDI+ GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,W...

junwong ⋅ 2012/03/23 ⋅ 0

【Linux学习 】Linux使用Script命令来记录并回放终端会话

[TOC] 一、背景 在之前的博客 【Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?】 里面,我已经详细记录了每天的自动备份与清理过期备份文件的工作...

欧阳鹏 ⋅ 2017/12/16 ⋅ 0

directUI的心得

WPF, Windows Live, QQ 和 百度 hi 的界面其实并不神秘。大家都想学习而不得其门而入。我也经历了跟大家同样的历程。现在发现了一些门道,跟大家分享一下。 1. 所谓 directUI 其实大部分不是...

ryany ⋅ 2010/12/01 ⋅ 0

开发记录【人人通】

点击修改按钮,保存后,窗口没有自动关闭。 原因:编辑页面中的nengLongValidateSetting方法的弹出窗口控件id没对应好。 2. 页面上显示时间格式如:2015-08-17 16:00:23.0 如何去时间格式的毫...

Gtwo ⋅ 2015/08/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JEPLUS主从功能配置之主从布局的设置——JEPLUS软件快速开发平台

JEPLUS主从功能配置之主从布局的设置 主从功能配置成功之后就需要根据业务需求来调整主从功能的数据显示方式,不同的主从数据的显示可以达到不同的主从数据显示效果,今天这篇笔记就讲解一下...

JEPLUS ⋅ 2分钟前 ⋅ 0

如何利用极光推送的新功能玩转世界杯营销

四年一次的世界杯已经于6月14日开赛!对于app的运营人员而言,这场远在俄罗斯的绿茵征战绝不仅仅牵动着球迷们的心,更拨动着众多互联网企业运营人员的神经。在这场营销大战中,push显然是app...

极光推送 ⋅ 6分钟前 ⋅ 0

Spring Cloud构建微服务架构-Hystrix依赖隔离

依赖隔离 “舱壁模式”对于熟悉Docker的读者一定不陌生,Docker通过“舱壁模式”实现进程的隔离,使得容器与容器之间不会互相影响。而Hystrix则使用该模式实现线程池的隔离,它会为每一个Hys...

itcloud ⋅ 8分钟前 ⋅ 0

SpringCloud 微服务 (八) 统一配置中心 Config Server&Client

壹 Spring Cloud Config 统一配置中心,方便维护配置文件,对一些公司对数据库密码等敏感的信息,对普通开发人员不公开,放在运维人员手上,对配置作一个隔离作用,另外项目线上的配置改动都要重新...

___大侠 ⋅ 12分钟前 ⋅ 0

echarts轮播地图并结合鼠标浮动点击

直接上代码 timeId=setInterval(function () { if(count<11){ myChart.dispatchAction({ type: 'downplay', ......

莫西摩西 ⋅ 15分钟前 ⋅ 0

基于 HTML5 的工业互联网 3D 可视化应用

工业企业中生产线处于高速运转,由工业设备所产生、采集和处理的数据量远大于企业中计算机和人工产生的数据,生产线的高速运转则对数据的实时性要求也更高。破解这些大数据就是企业在新一轮制...

xhload3d ⋅ 17分钟前 ⋅ 0

Nging启动与停止bat

start_nginx.bat @echo off  f:  cd F:\server\nginx-1.13.6  echo "nginx is starting on port 80"  start "" "nginx.exe"  exit   stop_nginx.bat @echo off::windows ......

Jay丶 ⋅ 19分钟前 ⋅ 0

SuRF: 一个优化的 Fast Succinct Tries

作者:唐刘 在前一篇文章中,我简单介绍了 Succinct Data Structure,这里我们继续介绍 SuRF。 Fast Succinct Tries SuRF 的核心数据结构就是 Fast Succinct Tries(FST),一种空间节省,支...

TiDB ⋅ 24分钟前 ⋅ 0

Kubernetes(六) - Secret和私有仓库认证

对一个公司来说安全也是最为重要的因为可能一旦出现安全问题可能这个公司就完了,所以对密码管理是一个长久不变的话题,Kubernetes对密码管理提供了Secret组件进行管理,最终映射成环境变量,文件...

喵了_个咪 ⋅ 25分钟前 ⋅ 0

DevOps的三大原则

DevOps的出现有其必然性。在软件开发生命周期中,遇到了两次瓶颈。第一次瓶颈是在需求阶段和开发阶段之间,针对不断变化的需求,对软件开发者提出了高要求,后来出现了敏捷方法论,强调适应需...

inidcard ⋅ 25分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部