文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 946
阅读 8
收藏 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
博文 2011
码字总数 14107
作品 0
深圳
程序员
C# WinForm开发系列 - GDI+

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

长征2号
2017/11/14
0
0
深度解读 - Windows 7核心图形架构细致分析(转贴)

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

迈克老狼1
2012/12/23
0
0
GDI+图像处理学习笔记——改变图像的透明度

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

晨曦之光
2012/05/23
491
0
ASP.NET 如何做出简单的验证码

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

我不会抽烟
2014/07/29
0
0
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
13
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部