DrawString 為 GDI+ 核心文字繪製函數,支援 Unicode、抗鋸齒、ClearType、次像素定位。本文涵蓋四種字體建立方式與五種 TextRenderingHint 模式視覺比較。
g := TGPGraphics.Create(Canvas.Handle);
sb := TGPSolidBrush.Create(MakeColor(0, 0, 255));
fontFamily := TGPFontFamily.Create('宋體');
font := TGPFont.Create(fontFamily, 48, FontStyleRegular, UnitPixel);
g.DrawString('Hello World!', -1, font, MakePoint(10.0, 10.0), sb);
font := TGPFont.Create('宋體', 32.0); // 預設 UnitPoint
g.DrawString('再見, 2007!', -1, font, MakePoint(10.0, 10.0), sb);
font := TGPFont.Create(Self.Canvas.Handle); // 同步表單 Font 屬性
g.DrawString('再見, 2007!', -1, font, MakePoint(10.0, 10.0), sb);
g.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
g.DrawString('SingleBitPerPixel', -1, font, MakePoint(10.0, 10.0), sb);
g.SetTextRenderingHint(TextRenderingHintAntiAlias);
g.DrawString('AntiAlias', -1, font, MakePoint(10.0, 60.0), sb);
g.SetTextRenderingHint(TextRenderingHintClearTypeGridFit);
g.DrawString('ClearTypeGridFit', -1, font, MakePoint(10.0, 110.0), sb);
| Delphi | 微軟 | 品質/效能 | 特點 |
|---|---|---|---|
| TextRenderingHintSingleBitPerPixel | SingleBitPerPixel | 低/快 | 單色位圖,無提示 |
| TextRenderingHintSingleBitPerPixelGridFit | SingleBitPerPixelGridFit | 中/快 | 單色 + 網格提示 |
| TextRenderingHintAntiAlias | AntiAlias | 高/中 | 灰階抗鋸齒,無提示 |
| TextRenderingHintAntiAliasGridFit | AntiAliasGridFit | 最高/慢 | 灰階 + 網格提示 |
| TextRenderingHintClearTypeGridFit | ClearTypeGridFit | 最高/慢 | 次像素 ClearType,最銳利 |
| TextRenderingHintSystemDefault | SystemDefault | 依系統 | 遵循系統 ClearType 設定 |
(同上篇,含 Regular/Bold/Italic/Underline/Strikeout 及 Pixel/Point/Inch/MM/Document/Display/World)
選擇 ClearTypeGridFit 可獲得最佳螢幕閱讀體驗;列印輸出建議 AntiAliasGridFit。