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

再學GDI+[60]: 繪圖品質控制大師 - SetSmoothingMode 七種模式完整對比

     編輯:Delphi

前言

TGPGraphics.SetSmoothingMode 控制幾何圖形與文字的邊緣抗鋸齒品質。本文提供完整的七種模式即時切換對比,幫助開發者根據效能與品質需求選擇最適合的設定。

七大平滑模式詳細對照

常數值Delphi 列舉微軟對應品質速度適用場景
-1SmoothingModeInvalidInvalid無效-錯誤測試用
0SmoothingModeDefaultDefault無抗鋸齒最快高效能、簡單幾何
1SmoothingModeHighSpeedHighSpeed無抗鋸齒最快遊戲、即時渲染
2SmoothingModeHighQualityHighQuality高品質抗鋸齒較慢印刷級輸出、靜態 UI
3SmoothingModeNoneNone無抗鋸齒最快像素藝術、銳利邊緣
4SmoothingModeAntiAliasAntiAlias標準抗鋸齒中等通用 UI、平衡選擇

ListBox 即時切換對比介面

左側繪圖區即時反映選擇模式,繪製橢圓與交叉線條展示邊緣品質差異。

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  p: TGPPen;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  p := TGPPen.Create(aclRed, 2);
  {ListBox ItemIndex 對應列舉值 -1 到 4}
  g.SetSmoothingMode(ListBox1.ItemIndex - 1);
  g.DrawEllipse(p, 10, 10, ClientWidth - ListBox1.Width - 20, ClientHeight - 20);
  g.DrawLine(p, 0, 0, ClientWidth - ListBox1.Width, ClientHeight);
  g.DrawLine(p, ClientWidth - ListBox1.Width, 0, 0, ClientHeight);
  p.Free; g.Free;
end;

執行效果預覽

七種平滑模式對比

選擇指南與效能建議

  • 預設推薦:SmoothingModeAntiAlias (4) - 品質/速度最佳平衡
  • 高品質列印:SmoothingModeHighQuality (2) - 列印預覽、匯出圖檔
  • 高效能動畫:SmoothingModeHighSpeed (1) - 60fps 遊戲、即時圖表
  • 像素精確:SmoothingModeNone (3) - 像素藝術、銳利幾何邊緣
  • 避免使用:SmoothingModeInvalid (-1)、Default (0) 行為不一致

文字渲染獨立控制

文字抗鋸齒由 SetTextRenderingHint 獨立控制(見第 45 篇),不受 SmoothingMode 影響。

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 108
  ClientWidth = 286
  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 ListBox1: TListBox ... {七個模式項目}
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved