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

再學GDI+[34]: 畫筆縮放變換 - ScaleTransform 獨立控制 X/Y 軸縮放

     編輯:Delphi

前言

TGPPen.ScaleTransform 對畫筆座標系統施加非均勻縮放。不同於 Graphics 縮放影響整個繪圖,畫筆縮放僅影響該畫筆繪製的線條幾何,可創造橢圓線條、透視線寬等特效。

ScaleTransform 參數與效果

procedure ScaleTransform(sx, sy: Single);
  • sx:X 軸縮放因子(>1 放大,<1 縮小,負值鏡像)
  • sy:Y 軸縮放因子
  • 獨立控制:sx ≠ sy 產生橢圓化效果

雙 TrackBar 即時控制橢圓線寬

  • TrackBar1:X 軸縮放 (0.1x ~ 10x)
  • TrackBar2:Y 軸縮放 (0.1x ~ 10x)
  • 繪製固定圓形路徑,觀察線條粗細隨縮放變化
procedure TForm1.FormPaint(Sender: TObject);
var g: TGPGraphics; p: TGPPen; r: TRect;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  p := TGPPen.Create(aclBrown, 3);
  p.ScaleTransform(TrackBar1.Position / 10, TrackBar2.Position / 10);  {關鍵}
  r := ClientRect; InflateRect(r, -30, -30); OffsetRect(r, 0, -10);
  g.DrawEllipse(p, MakeRect(r));  {圓形路徑→橢圓線寬}
  p.Free; g.Free;
end;

執行效果預覽

畫筆縮放變換

ScaleTransform vs Graphics 縮放差異

特性Pen.ScaleTransformGraphics.ScaleTransform
影響範圍僅該畫筆繪製的線條所有後續繪圖操作
線寬表現線條幾何實際縮放線寬隨座標系縮放
適用場景特殊線寬效果、書法筆觸整體縮放、縮放平移
文字影響不影響文字也會縮放

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 196
  ClientWidth = 296
  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 ... {X 縮放}
  object TrackBar2: TTrackBar ... {Y 縮放}
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved