FS_MATRIX 주변의 가변 OO 래퍼입니다type TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | 대량 점 연산에 쓰이는 FS_POINTF 값의 동적 배열 |
TPdfRectArray | 대량 사각형 연산에 쓰이는 FS_RECTF 값의 동적 배열 |
TPdfMatrixFitMode | 사각형 매핑을 위한 pmfStretch, pmfContain, pmfCover 피팅 정책 |
TPdfMatrixDecomposition | TryDecompose가 TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant, IsReflected 필드로 반환하는 이동, 부호 있는 스케일, 시계 방향 회전, 전단, 행렬식, 반사 진단 정보 |
| Member | Description |
|---|---|
Create | 단위 행렬, 여섯 값 행렬, 또는 FS_MATRIX로부터의 방어적 복사본을 만듭니다 |
NewTranslation | 새 이동 행렬을 만듭니다 |
NewScale | 새 비균등 스케일 행렬을 만듭니다 |
NewRotation | 도 또는 라디안 단위로 시계 또는 반시계 방향 회전 행렬을 만듭니다 |
NewSkew | X와 Y 전단 각이 분리된 행렬을 만듭니다 |
NewRectMapping | 원본 사각형을 대상 사각형 안에 늘리거나 맞추거나 덮는 행렬을 만듭니다 |
TryCreateRectMapping | FS_MATRIX 매핑을 반환하고 크기가 0이거나 유한하지 않거나 오버플로하는 입력은 객체를 할당하지 않고 거부합니다 |
Reset | 행렬을 단위 행렬로 되돌립니다 |
SetElements | 여섯 행렬 요소를 한 번의 호출로 교체합니다 |
Assign | 다른 TPdfMatrix나 raw FS_MATRIX를 이 인스턴스로 복사합니다 |
Clone | 독립적인 객체 복사본을 만듭니다 |
Determinant | 선형 2 by 2 성분의 행렬식을 반환합니다 |
IsFinite | 모든 요소가 유한한 Single 값인지 보고합니다 |
IsIdentity | 호출자가 고른 허용 오차로 단위 행렬인지 검사합니다 |
IsInvertible | 역행렬을 계산하지 않고 유한성과 스케일을 고려한 가역성을 검사합니다 |
IsTranslationOnly | 선형 성분이 단위 행렬인지 검사합니다 |
IsAxisAligned | 사각형이 축 정렬을 유지하는지 검사하며 허용 오차 안의 90도 배치도 포함합니다 |
NearlyEquals | 허용 오차로 TPdfMatrix나 FS_MATRIX와 비교합니다 |
GetTranslation | X와 Y 이동 요소를 함께 읽습니다 |
SetTranslation | 선형 성분을 보존하면서 X와 Y 이동을 교체합니다 |
ClearTranslation | 두 이동 요소를 0으로 설정합니다 |
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 | 정규화된 사각형 사이의 stretch, contain, cover 매핑을 뒤에 붙입니다 |
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 | 호출자 소유 저장 공간에서 사각형 배열을 다른 배열을 할당하지 않고 매핑합니다 |
| Property | Type | Description |
|---|---|---|
a | Single | 읽기 전용 첫 번째 행렬 요소 |
b | Single | 읽기 전용 두 번째 행렬 요소 |
c | Single | 읽기 전용 세 번째 행렬 요소 |
d | Single | 읽기 전용 네 번째 행렬 요소 |
e | Single | 읽기 전용 이동 X 요소 |
f | Single | 읽기 전용 이동 Y 요소 |
Handle | FS_MATRIX | FS_MATRIX나 PFS_MATRIX를 받는 PDFium API를 위한 raw 행렬 값 |
TPdfMatrix는 PDF 아핀 배치 a b c d e f를 사용하고 각 연산을 오른쪽 곱하므로, 호출이 점에 적용되는 변환과 같은 순서로 읽힙니다
PreMultiply와 Pre* 헬퍼는 현재 변환 앞에 연산을 추가하고, 피벗 헬퍼는 선택한 피벗을 고정한 채 이동-연산-이동 시퀀스를 뒤에 붙입니다
pmfContain은 가운데 정렬된 여백과 함께 원본 사각형 전체를 보존하고 pmfCover는 가운데 정렬된 넘침으로 대상을 채우며, pmfStretch는 X와 Y가 서로 독립적으로 스케일되는 것을 허용합니다
대량 점과 사각형 메서드는 출력 배열을 하나 할당하고, in-place 변형은 아무것도 할당하지 않으며, TryTransformBounds는 중간 배열을 만들지 않고 변환된 점을 훑습니다
Handle을 FPDFPageObj_SetMatrix, FPDFPageObj_Transform, FPDFText_SetMatrix 같은 API와 함께 사용하세요
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;