首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi GDI+ 學習筆記 (23):文字排版進階 (矩形範圍、對齊、格式旗標)

     編輯:Delphi

DrawString 進階:TGPRectF 範圍、StringAlignment、StringFormatFlags

DrawString 配合 TGPRectF 矩形範圍與 TGPStringFormat 可實現多行換行、水平/垂直置中、靠左/靠右、從右向左 (RTL)、垂直排版、不換行、尾隨空格保留、剪裁控制等專業排版功能。

1. 矩形範圍自動換行


rectF := MakeRect(10.0, 10.0, 116.0, 100.0);
g.DrawRectangle(p, rectF); // 顯示邊界
g.DrawString(str, -1, font, rectF, nil, sb); // 參數5=nil 使用預設格式

2. 置中對齊 (水平+垂直)


strFormat := TGPStringFormat.Create;
strFormat.SetAlignment(StringAlignmentCenter);   // 水平置中
strFormat.SetLineAlignment(StringAlignmentCenter); // 垂直置中
g.DrawString(str, -1, font, rectF, strFormat, sb);

3. 格式旗標:從右向左 (RTL)


strFormat := TGPStringFormat.Create(StringFormatFlagsDirectionRightToLeft);
g.DrawString(str, -1, font, rectF, strFormat, sb);

StringAlignment 對照

Delphi微軟說明
StringAlignmentNearNear靠近原點 (LTR=左, RTL=右)
StringAlignmentCenterCenter置中
StringAlignmentFarFar遠離原點 (LTR=右, RTL=左)

StringFormatFlags 常用值

Delphi微軟效果
StringFormatFlagsDirectionRightToLeftDirectionRightToLeftRTL 文字順序
StringFormatFlagsDirectionVerticalDirectionVertical垂直排版
StringFormatFlagsNoWrapNoWrap禁止換行
StringFormatFlagsNoClipNoClip允許超出矩形繪製
StringFormatFlagsFitBlackBoxFitBlackBox允許字符超出邊界框
StringFormatFlagsMeasureTrailingSpacesMeasureTrailingSpaces計算寬度含尾隨空格
StringFormatFlagsDisplayFormatControlDisplayFormatControl顯示控制字符符號
StringFormatFlagsNoFontFallbackNoFontFallback缺字不回退替代字體
StringFormatFlagsLineLimitLineLimit僅顯示完整行

專業文字排版離不開 StringFormat,報表、PDF、編輯器核心功能皆建構於此。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved