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

再學GDI+[38]: 文字輸出基礎 - DrawString 與 TGPFont 兩種建立方式

     編輯:Delphi

前言

GDI+ 文字輸出核心是 DrawString 方法與 TGPFont 字體物件。本文示範兩種建立字體的方式:直接指定名稱/大小與從 VCL Canvas 借用字體屬性。

方式一:直接建立(推薦)

procedure TForm1.Button1Click(Sender: TObject);
var g: TGPGraphics; sb: TGPSolidBrush; font: TGPFont;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  sb := TGPSolidBrush.Create(aclBlack);
  font := TGPFont.Create('宋體', 9);  {字體名 + 點大小}
  g.DrawString('嬌女字平陽 折花倚桃邊 折花不見我 淚下如流泉', -1, font, MakePoint(10.0, 20), sb);
  font.Free; sb.Free; g.Free;
end;

方式二:從 Canvas 借用(有限制)

procedure TForm1.Button2Click(Sender: TObject);
var g: TGPGraphics; sb: TGPSolidBrush; font: TGPFont;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  sb := TGPSolidBrush.Create(aclBlack);
  Canvas.Font.Name := '宋體';
  Canvas.Font.Size := 9;
  font := TGPFont.Create(Canvas.Handle);  {從 DC 借用}
  g.DrawString('小兒名伯禽 與姊亦齊肩 雙行桃樹下 撫背復誰憐', -1, font, MakePoint(10.0, 40), sb);
  font.Free; sb.Free; g.Free;
end;

兩種方式差異對比

特性直接建立Canvas 借用
字體屬性完整度完整控制可能遺失顏色、字符集等
跨平台一致性高依賴 VCL Canvas 狀態
程式碼簡潔度簡潔需先設定 Canvas.Font
動態字體切換容易需同步 Canvas.Font

DrawString 關鍵參數說明

  • length = -1:輸出以 null 結尾的完整字串
  • point: TGPPointF:基線起始點(左下角),必須用浮點結構
  • brush:決定填充樣式(純色/漸層/紋理/陰影)
  • font:決定字形、大小、樣式

執行效果預覽

文字輸出基礎效果

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 105
  ClientWidth = 282
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton ... {直接建立}
  object Button2: TButton ... {Canvas 借用}
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved