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

再學GDI+[32]: 畫筆尖角限制 - SetMiterLimit 控制斜接連接最大長度

     編輯:Delphi

前言

當兩條線段以銳角連接且設定 LineJoinMiter 斜接模式時,連接處會延伸形成尖角。SetMiterLimit 限制這個尖角的最大長度與線寬的比率,防止極銳角產生過長尖刺。預設值 10.0 通常足夠。

MiterLimit 參數含義

  • 定義:尖角長度 / 線寬 ≤ MiterLimit
  • 預設 10.0:允許尖角長達 10 倍線寬
  • 超過限制:自動轉為 LineJoinBevel 斜切模式
  • 最小值:1.0(實際上強制斜切)

TrackBar 即時調整三角形尖角

  • 固定三點多邊形,兩邊形成銳角
  • 28px 粗畫筆,LineJoinMiter 模式
  • TrackBar 控制 MiterLimit 0.0 ~ 10.0
procedure TForm1.FormPaint(Sender: TObject);
const PtArr: array[0..2] of TGPPoint = ((X:90;Y:80), (X:240;Y:30), (X:240;Y:80));
var g: TGPGraphics; p: TGPPen;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  p := TGPPen.Create(aclSeaGreen, 28);
  p.SetMiterLimit(TrackBar1.Position / 10);  {關鍵:設定尖角限制}
  g.DrawPolygon(p, PGPPoint(@PtArr), Length(PtArr));
  p.Free; g.Free;
end;

執行效果預覽

尖角限制效果

MiterLimit 數值效果對照

MiterLimit銳角連接表現視覺結果
1.0 ~ 2.0幾乎所有銳角被限制全斜切,無尖角
3.0 ~ 5.0中等銳角保留,極銳角斜切平衡自然
10.0 (預設)大部分銳角保留尖角尖銳幾何感
> 20極銳角也保留可能產生視覺異常長刺

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 138
  ClientWidth = 266
  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 TrackBar1: TTrackBar ... {0~100 對應 0.0~10.0}
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved