文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 946
阅读 9
收藏 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
ASP.NET 如何做出简单的验证码

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

我不会抽烟
2014/07/29
0
0
GDI+图像处理学习笔记——改变图像的透明度

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

晨曦之光
2012/05/23
500
0
VC 6.0 配置和使用gdi+

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

junwong
2012/03/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

isEmpty和null的区别

isEmpty和null的区别: 1.一个是对象为空(IsNull),一个是值为空(IsEmpty) 2.IsNull指任务类型变量是否为空包括对象类型的变量。 IsNull函数: 功能:返回Boolean的值,指明表达是否不包...

DemonsI
5分钟前
0
0
Centos7 安装mysql与php

https://blog.csdn.net/qq_36431213/article/details/79576025 官网下载安装mysql-server 依次使用下面三个命令安装 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.r......

Yao--靠自己
14分钟前
0
0
详解如何实现一个简单的 vuex

首先我们需要知道为何要使用 vuex。父子组件通信用 prop 和自定义事件可以搞定,简单的非父子组件通信用 bus(一个空的 Vue 实例)。那么使用 vuex 就是为了解决复杂的非父子组件通信。 仅仅...

嫣然丫丫丫
20分钟前
1
0
算法——RangePartitioner实现之reservoirSample

简介 reservoir的作用是:**在不知道文件总行数的情况下,如何从文件中随机的抽取一行?**即是说如果最后发现文字档共有N行,则每一行被抽取的概率均为1/N? 我们可以:定义取出的行号为cho...

freeli
22分钟前
1
0
Python安装及netcdf数据读写

一、在CentOS7系统上安装Python3 在anaconda官网下载(http://https://www.anaconda.com/download/#linux)(Anaconda指的是一个开源的Python发行版本,是Python的包管理器和环境管理器) 下...

voole
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部