PDFium Delphi Component 文件

TPdfMatrix 類別

單元: FPdfMatrix
圍繞 PDFium 的 FS_MATRIX 的可變 OO 包裝器,用於組合 PDF 使用者空間變換

Syntax

type TPdfMatrix = class ... end;

相關類型

TypeDescription
TPdfPointArray大量點操作使用的 FS_POINTF 值動態陣列
TPdfRectArray大量矩形操作使用的 FS_RECTF 值動態陣列
TPdfMatrixFitMode矩形映射的 pmfStretch、pmfContain 或 pmfCover 貼合策略
TPdfMatrixDecompositionTryDecompose 傳回的平移、帶正負號縮放、順時針旋轉、剪切、行列式與鏡射診斷,存放於 TranslationX、TranslationY、ScaleX、ScaleY、RotationDegrees、ShearDegrees、Determinant 與 IsReflected 欄位

Methods

MemberDescription
Create建立單位矩陣、六值矩陣,或從 FS_MATRIX 建立防禦性副本
NewTranslation建立新的平移矩陣
NewScale建立新的非均勻縮放矩陣
NewRotation以角度或弧度建立順時針或逆時針旋轉矩陣
NewSkew建立具有獨立 X 與 Y 剪切角度的矩陣
NewRectMapping建立將來源矩形延展、內含或覆蓋於目的地矩形內的矩陣
TryCreateRectMapping傳回 FS_MATRIX 映射,並在不配置物件的情況下拒絕零尺寸、非有限或溢位的輸入
Reset將矩陣重設為單位矩陣
SetElements一次呼叫替換全部六個矩陣元素
Assign將另一個 TPdfMatrix 或原始 FS_MATRIX 複製到這個執行個體
Clone建立獨立的物件副本
Determinant傳回線性 2 乘 2 元件的行列式
IsFinite回報每個元素是否都是有限的 Single 值
IsIdentity以呼叫端可選擇的容許度測試單位矩陣
IsInvertible在不計算反矩陣的情況下測試有限且具尺度感知的可逆性
IsTranslationOnly測試線性元件是否為單位矩陣
IsAxisAligned測試矩形是否維持軸對齊,包括容許度內的四分之一轉布局
NearlyEquals以容許度與 TPdfMatrix 或 FS_MATRIX 比較
GetTranslation同時讀取 X 與 Y 平移元素
SetTranslation在保留線性元件的情況下替換 X 與 Y 平移
ClearTranslation將兩個平移元素設為零
TryDecompose在矩陣非奇異時擷取平移、帶正負號縮放、順時針旋轉、剪切、行列式與鏡射狀態
Multiply以另一個 TPdfMatrix 或明確的 a 到 f 值後乘
PreMultiply以另一個 TPdfMatrix 或明確的六值矩陣前乘
PreTranslate在矩陣的局部輸入空間前置一個平移
PreScale前置獨立的 X 與 Y 縮放係數
PreRotate前置順時針或逆時針旋轉
PreSkew前置獨立的 X 與 Y 剪切角度
Translate依 deltaX 與 deltaY 附加平移
Scale附加獨立的 X 與 Y 縮放係數
Rotate以角度或弧度附加順時針或逆時針旋轉
HorizontalFlip附加 X 軸翻轉
VerticalFlip附加 Y 軸翻轉
CentralFlip附加兩個軸翻轉,等同於不需要三角函數的 180 度旋轉
Skew附加獨立的 X 與 Y 剪切角度
RotateAt圍繞保持固定的樞紐附加旋轉
ScaleAt圍繞保持固定的樞紐附加縮放
SkewAt圍繞保持固定的樞紐附加剪切
HorizontalFlipAt圍繞呼叫端選擇的 X 座標附加水平翻轉
VerticalFlipAt圍繞呼叫端選擇的 Y 座標附加垂直翻轉
CentralFlipAt圍繞呼叫端選擇的樞紐附加兩個翻轉
MapRectToRect在正規化矩形之間附加延展、內含或覆蓋映射
Invert將矩陣替換為其反矩陣,奇異時引發 EPdfMatrixError
TryInvert將矩陣替換為其反矩陣;奇異或接近奇異時不變更狀態並傳回 False
TryGetInverse在不變更這個執行個體的情況下計算反矩陣 FS_MATRIX
InverseCopy建立獨立的反矩陣,奇異時引發 EPdfMatrixError
TransformPoint使用 PDF 列向量慣例,透過仿射變換映射座標
TransformVector僅透過線性元件映射方向,因此忽略平移
TryInverseTransformPoint在不配置矩陣的情況下透過反矩陣映射點,並在變換奇異時回報 False
InverseTransformPoint透過反矩陣映射點,奇異時引發 EPdfMatrixError
TransformQuad映射 FS_QUADPOINTSF 值的全部四個點
TransformPoints以單次結果配置映射點陣列
TransformPointsInPlace在呼叫端擁有的儲存區中原地映射點陣列,不配置另一個陣列
TryTransformBounds單次累加變換後的點邊界,空輸入時傳回 False
TransformBounds單次累加變換後的點邊界,空輸入時引發 EPdfMatrixError
TransformRect透過精確的軸對齊快速路徑或緊密的四角邊界,正規化並映射矩形
TransformRects以單次結果配置映射矩形陣列
TransformRectsInPlace在呼叫端擁有的儲存區中原地映射矩形陣列,不配置另一個陣列

Properties

PropertyTypeDescription
aSingle唯讀的第一個矩陣元素
bSingle唯讀的第二個矩陣元素
cSingle唯讀的第三個矩陣元素
dSingle唯讀的第四個矩陣元素
eSingle唯讀的平移 X 元素
fSingle唯讀的平移 Y 元素
HandleFS_MATRIX接受 FS_MATRIX 或 PFS_MATRIX 的 PDFium API 使用的原始矩陣值

Description

TPdfMatrix 使用 PDF 仿射布局 a b c d e f 並對每個操作後乘,因此呼叫順序與套用到點的變換順序相同

PreMultiply 與 Pre* 輔助器在目前的變換之前加入操作,而樞紐輔助器附加「平移-操作-平移」序列,使選定的樞紐保持固定

pmfContain 保留完整的來源矩形並將未使用空間置中,pmfCover 以置中溢位填滿目的地,而 pmfStretch 允許獨立的 X 與 Y 縮放

大量點與矩形方法會配置一個輸出陣列,原地變體不配置任何陣列,而 TryTransformBounds 掃描變換後的點而不建構中繼陣列

將 Handle 用於 FPDFPageObj_SetMatrix、FPDFPageObj_Transform 與 FPDFText_SetMatrix 等 API

Example

var
  Matrix: TPdfMatrix;
begin
  Matrix := TPdfMatrix.Create;
  Matrix.ScaleAt(0.5, 0.5, 144, 144);
  Matrix.RotateAt(15, 144, 144);
  Matrix.Translate(72, 72);
  FPDFPageObj_SetMatrix(ObjectHandle, @Matrix.Handle);
end;

See Also

TPdf.CreateXObjectFromPage, TPdf.InsertFormObjectFromXObject