DrawString 配合 TGPRectF 矩形範圍與 TGPStringFormat 可實現多行換行、水平/垂直置中、靠左/靠右、從右向左 (RTL)、垂直排版、不換行、尾隨空格保留、剪裁控制等專業排版功能。
rectF := MakeRect(10.0, 10.0, 116.0, 100.0);
g.DrawRectangle(p, rectF); // 顯示邊界
g.DrawString(str, -1, font, rectF, nil, sb); // 參數5=nil 使用預設格式
strFormat := TGPStringFormat.Create;
strFormat.SetAlignment(StringAlignmentCenter); // 水平置中
strFormat.SetLineAlignment(StringAlignmentCenter); // 垂直置中
g.DrawString(str, -1, font, rectF, strFormat, sb);
strFormat := TGPStringFormat.Create(StringFormatFlagsDirectionRightToLeft);
g.DrawString(str, -1, font, rectF, strFormat, sb);
| Delphi | 微軟 | 說明 |
|---|---|---|
| StringAlignmentNear | Near | 靠近原點 (LTR=左, RTL=右) |
| StringAlignmentCenter | Center | 置中 |
| StringAlignmentFar | Far | 遠離原點 (LTR=右, RTL=左) |
| Delphi | 微軟 | 效果 |
|---|---|---|
| StringFormatFlagsDirectionRightToLeft | DirectionRightToLeft | RTL 文字順序 |
| StringFormatFlagsDirectionVertical | DirectionVertical | 垂直排版 |
| StringFormatFlagsNoWrap | NoWrap | 禁止換行 |
| StringFormatFlagsNoClip | NoClip | 允許超出矩形繪製 |
| StringFormatFlagsFitBlackBox | FitBlackBox | 允許字符超出邊界框 |
| StringFormatFlagsMeasureTrailingSpaces | MeasureTrailingSpaces | 計算寬度含尾隨空格 |
| StringFormatFlagsDisplayFormatControl | DisplayFormatControl | 顯示控制字符符號 |
| StringFormatFlagsNoFontFallback | NoFontFallback | 缺字不回退替代字體 |
| StringFormatFlagsLineLimit | LineLimit | 僅顯示完整行 |
專業文字排版離不開 StringFormat,報表、PDF、編輯器核心功能皆建構於此。