IGPStringFormat 的方法和属性:
//方法: IGPStringFormat.GetTabStops(); { 获取制表位 } IGPStringFormat.SetTabStops(); { 设置制表位 } IGPStringFormat.SetDigitSubstitution(); { 指定用本地数字替换西方数字时使用的语言和方法 } IGPStringFormat.SetMeasurableCharacterRanges(); { 指定 IGPCharacterRanges 结构的数组 } //属性: IGPStringFormat.FormatFlags; { 获取或设置 TGPStringFormatFlags 集合 } IGPStringFormat.Alignment; { 获取或设置水平对齐 } IGPStringFormat.LineAlignment; { 获取或设置垂直对齐 } IGPStringFormat.HotkeyPrefix; { 获取或设置 TGPHotkeyPrefix 枚举 } IGPStringFormat.DigitSubstitutionLanguage; { 获取或设置用本地数字替换西方数字时使用的语言 } IGPStringFormat.DigitSubstitutionMethod; { 获取或设置要用于数字替换的方法 } IGPStringFormat.Trimming; { 获取或设置 TGPStringTrimming 枚举 } IGPStringFormat.MeasurableCharacterRangeCount { 指定的 IGPCharacterRanges 结构中的字符总数 } //类函数: TGPStringFormat.GenericDefault; { 默认的 TGPStringFormat 对象 } TGPStringFormat.GenericTypographic; { 一般的版式 TGPStringFormat 对象 }
IGPStringFormat.Alignment 测试:

uses GdiPlus; procedure TForm1.FormPaint(Sender: TObject); const str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var Graphics: IGPGraphics; Brush: IGPSolidBrush; Pen: IGPPen; Font: IGPFont; StringFormat: IGPStringFormat; Rect: TGPRectF; begin Graphics := TGPGraphics.Create(Handle); Brush := TGPSolidBrush.Create(TGPColor.Red); Pen := TGPPen.Create(TGPColor.Black); Font := TGPFont.Create('Arial', 16, [FontStyleBold]); StringFormat := TGPStringFormat.Create; Rect.Initialize(10, 10, 180, 60); Graphics.DrawString(str, Font, Rect, nil, Brush); Graphics.DrawRectangle(Pen, Rect); Rect.Y := Rect.Y + 60 + 20; StringFormat.Alignment := StringAlignmentCenter; Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.DrawRectangle(Pen, Rect); Rect.Y := Rect.Y + 60 + 20; StringFormat.Alignment := StringAlignmentFar; Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.DrawRectangle(Pen, Rect); end;
IGPStringFormat.LineAlignment 测试:

uses GdiPlus; procedure TForm1.FormPaint(Sender: TObject); const str = 'ABCDEFG'; var Graphics: IGPGraphics; Brush: IGPSolidBrush; Pen: IGPPen; Font: IGPFont; StringFormat: IGPStringFormat; Rect: TGPRectF; begin Graphics := TGPGraphics.Create(Handle); Brush := TGPSolidBrush.Create(TGPColor.Red); Pen := TGPPen.Create(TGPColor.Black); Font := TGPFont.Create('Arial', 16, [FontStyleBold]); StringFormat := TGPStringFormat.Create; Rect.Initialize(10, 10, 180, 60); Graphics.DrawString(str, Font, Rect, nil, Brush); Graphics.DrawRectangle(Pen, Rect); Rect.Y := Rect.Y + 60 + 20; StringFormat.LineAlignment := StringAlignmentCenter; Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.DrawRectangle(Pen, Rect); Rect.Y := Rect.Y + 60 + 20; StringFormat.LineAlignment := StringAlignmentFar; Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.DrawRectangle(Pen, Rect); end;
IGPStringFormat.SetTabStops 测试:

uses GdiPlus; procedure TForm1.FormPaint(Sender: TObject); const Tabs: array [0..2] of Single = (150, 100, 100); Str = 'Name'#9'Test 1'#9'Test 2'#9'Test 3'#13#10 + 'Joe'#9'95'#9'88'#9'91'#13#10 + 'Mary'#9'98'#9'84'#9'90'#13#10 + 'Sam'#9'42'#9'76'#9'98'#13#10 + 'Jane'#9'65'#9'73'#9'92'; var Graphics: IGPGraphics; Brush: IGPSolidBrush; Pen: IGPPen; Font: IGPFont; StringFormat: IGPStringFormat; Rect: TGPRectF; begin Graphics := TGPGraphics.Create(Handle); Brush := TGPSolidBrush.Create($FF000000); Pen := TGPPen.Create($FFFF0000); Font := TGPFont.Create('Courier New', 12); StringFormat := TGPStringFormat.Create; StringFormat.SetTabStops(0, [150, 100, 100]); // StringFormat.SetTabStops(50, [100, 100, 100]); //同上 Rect.Initialize(10, 10, 420, 100); Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.DrawRectangle(Pen, Rect); end;
IGPStringFormat.HotkeyPrefix 测试:

uses GdiPlus; procedure TForm1.FormPaint(Sender: TObject); var Graphics: IGPGraphics; Font: IGPFont; Pt: TGPPointF; Brush: IGPSolidBrush; StringFormat: IGPStringFormat; begin Graphics := TGPGraphics.Create(Handle); Font := TGPFont.Create(Canvas.Font.Name, 12); Pt.Initialize(10, 10); Brush := TGPSolidBrush.Create($FF000000); StringFormat := TGPStringFormat.Create; StringFormat.HotkeyPrefix := HotkeyPrefixShow; Graphics.DrawString('&Button', Font, Pt, StringFormat, Brush); Pt.Y := Pt.Y * 2 + Font.GetHeight(Graphics); Graphics.DrawString('Butt&on', Font, Pt, StringFormat, Brush); end;
IGPStringFormat.Trimming 测试:

uses GdiPlus; procedure TForm1.FormPaint(Sender: TObject); var Graphics: IGPGraphics; Font: IGPFont; Rect: TGPRectF; Brush: IGPSolidBrush; StringFormat: IGPStringFormat; str: string; i: Integer; begin Graphics := TGPGraphics.Create(Handle); Graphics.Clear($FFFFFFFF); Brush := TGPSolidBrush.Create($FF000000); Font := TGPFont.Create(Canvas.Font.Name, 10); Rect.Initialize(20, 20, ClientWidth - 40, Font.GetHeight(Graphics)); StringFormat := TGPStringFormat.Create; str := Application.ExeName; for i := 0 to 5 do begin StringFormat.Trimming := TGPStringTrimming(i); Graphics.DrawString(str, Font, Rect, StringFormat, Brush); Graphics.TranslateTransform(0, Rect.Y + Rect.Height); end; end;
另, 关于 TGPStringFormatFlags (对应 FormatFlags 属性或用于建立参数):
http://msdn.microsoft.com/zh-cn/library/system.drawing.stringformatflags(VS.80).aspx
分类:
Delphi 与 GDI+
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2008-12-22 遍历进程并获取进程路径 - 回复 "编程少年" 的问题
2007-12-22 Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式