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

再學GDI+[40]: 文字畫刷選擇 - 四種筆刷類型填充文字效果對比

     編輯:Delphi

前言

GDI+ 文字輸出不限於純色,DrawString 接受任意 TGPBrush 衍生類別。本文對比四種筆刷填充文字效果:實心、陰影、紋理、線性漸層。

四大筆刷類型文字填充對比

筆刷類型建立方式視覺效果適用場景
實心畫刷TGPSolidBrush.Create(color)單一純色標準 UI 文字
陰影畫刷TGPHatchBrush.Create(style, fore, back)規則圖案填充強調標題、列印優化
紋理畫刷TGPTextureBrush.Create(image)圖片平鋪/拉伸填充藝術字、材質文字
線性漸層TGPLinearGradientBrush.Create(pt1, pt2, c1, c2)兩色線性過渡現代 UI、標題強調

RadioGroup 即時切換介面

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  font: TGPFont;
  img: TGPImage;
  b: TGPBrush;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  img := TGPImage.Create('c:\temp\small.jpg');  {需存在圖片檔}
  case RadioGroup1.ItemIndex of
    0: b := TGPSolidBrush.Create(aclRed);
    1: b := TGPHatchBrush.Create(HatchStyleCross, aclSilver, aclRed);
    2: b := TGPTextureBrush.Create(img);
    3: b := TGPLinearGradientBrush.Create(
      MakePoint(0,0),
      MakePoint(ClientWidth - RadioGroup1.Width, ClientHeight),
      aclYellow, aclRed);
  end;
  font := TGPFont.Create('Arial Black', 60, FontStyleBold);
  g.DrawString('Delphi', -1, font, MakePoint(0.0, 0), b);
  img.Free; b.Free; font.Free; g.Free;
end;

執行效果預覽

四種筆刷填充文字

關鍵技術補充

  • 紋理畫刷:預設 WrapModeTile 平鋪,可用 SetWrapMode 改為 Clamp/Flip
  • 漸層方向:兩點決定漸層向量,垂直於文字基線產生上下漸層
  • 陰影樣式:52 種 HatchStyle 可選,HatchStyleCross 為十字交叉
  • 效能:紋理/漸層筆刷較實心畫刷消耗更多 GPU/CPU 資源

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 120
  ClientWidth = 399
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
  object RadioGroup1: TRadioGroup ... {右側四項筆刷類型}
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved