FS_MATRIX för att bygga samman transformationer i PDF:s user spacetype TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | Dynamisk array av FS_POINTF-värden som används av massoperationer på punkter |
TPdfRectArray | Dynamisk array av FS_RECTF-värden som används av massoperationer på rektanglar |
TPdfMatrixFitMode | Anpassningspolicy pmfStretch, pmfContain eller pmfCover för rektangelmappning |
TPdfMatrixDecomposition | Translation, teckensatt skala, medurs rotation, shear, determinant och speglingsdiagnostik som TryDecompose returnerar i fälten TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant och IsReflected |
| Member | Description |
|---|---|
Create | Skapar en identitetsmatris, en sexvärdesmatris eller en defensiv kopia från FS_MATRIX |
NewTranslation | Skapar en ny translationsmatris |
NewScale | Skapar en ny icke-uniform skalningsmatris |
NewRotation | Skapar en medurs eller moturs rotationsmatris i grader eller radianer |
NewSkew | Skapar en matris med separata skew-vinklar för X och Y |
NewRectMapping | Skapar en matris som stretchar, innehåller eller täcker en källrektangel inom en målrektangel |
TryCreateRectMapping | Returnerar en FS_MATRIX-mappning och avvisar nollstora, icke-ändliga eller överflödande indata utan att allokera ett objekt |
Reset | Återställer matrisen till identiteten |
SetElements | Ersätter alla sex matriselement i ett anrop |
Assign | Kopierar en annan TPdfMatrix eller rå FS_MATRIX in i instansen |
Clone | Skapar en oberoende objektkopia |
Determinant | Returnerar determinanten för den linjära 2 gånger 2-komponenten |
IsFinite | Rapporterar huruvida varje element är ett ändligt Single-värde |
IsIdentity | Testar identitet med en anroparvald tolerans |
IsInvertible | Testar ändlig och skalmedveten inverterbarhet utan att beräkna en invers |
IsTranslationOnly | Testar huruvida den linjära komponenten är identiteten |
IsAxisAligned | Testar huruvida rektanglar förblir axelparallella, inklusive kvartsvarvsorienteringar inom toleransen |
NearlyEquals | Jämför mot TPdfMatrix eller FS_MATRIX med en tolerans |
GetTranslation | Läser X- och Y-translationselementen tillsammans |
SetTranslation | Ersätter X- och Y-translationen med bibehållen linjär komponent |
ClearTranslation | Sätter båda translationselementen till noll |
TryDecompose | Extraherar translation, teckensatt skala, medurs rotation, shear, determinant och speglingstillstånd när matrisen inte är singulär |
Multiply | Postmultipliserar med en annan TPdfMatrix eller explicita värden från a till f |
PreMultiply | Premultipliserar med en annan TPdfMatrix eller explicit sexvärdesmatris |
PreTranslate | Förbereder en translation i matrisens lokala indatarymd |
PreScale | Förbereder separata skalfaktorer för X och Y |
PreRotate | Förbereder en medurs eller moturs rotation |
PreSkew | Förbereder separata skew-vinklar för X och Y |
Translate | Bifogar en translation med deltaX och deltaY |
Scale | Bifogar separata skalfaktorer för X och Y |
Rotate | Bifogar en medurs eller moturs rotation i grader eller radianer |
HorizontalFlip | Bifogar en vändning kring X-axeln |
VerticalFlip | Bifogar en vändning kring Y-axeln |
CentralFlip | Bifogar vändning kring båda axlarna, detsamma som en 180-gradersrotation utan trigonometri |
Skew | Bifogar separata skew-vinklar för X och Y |
RotateAt | Bifogar en rotation kring en fixerad pivot |
ScaleAt | Bifogar en skalning kring en fixerad pivot |
SkewAt | Bifogar en shear kring en fixerad pivot |
HorizontalFlipAt | Bifogar en horisontell vändning kring en anroparvald X-koordinat |
VerticalFlipAt | Bifogar en vertikal vändning kring en anroparvald Y-koordinat |
CentralFlipAt | Bifogar vändning kring båda axlarna runt en anroparvald pivot |
MapRectToRect | Bifogar en stretch-, contain- eller cover-mappning mellan normaliserade rektanglar |
Invert | Ersätter matrisen med dess invers eller genererar EPdfMatrixError när den är singulär |
TryInvert | Ersätter matrisen med dess invers och returnerar False utan mutation när den är singulär eller nära singulär |
TryGetInverse | Beräknar en invers FS_MATRIX utan att mutera instansen |
InverseCopy | Skapar en oberoende invers matris eller genererar EPdfMatrixError när den är singulär |
TransformPoint | Mappar en koordinat genom den affina transformeringen enligt PDF:s radvektorkonvention |
TransformVector | Mappar en riktning genom endast den linjära komponenten så att translationen ignoreras |
TryInverseTransformPoint | Mappar en punkt genom inversen utan att allokera en matris och rapporterar en singulär transformering som False |
InverseTransformPoint | Mappar en punkt genom inversen eller genererar EPdfMatrixError när den är singulär |
TransformQuad | Mappar alla fyra punkter i ett FS_QUADPOINTSF-värde |
TransformPoints | Mappar en punktarray med en enda resultat-allokering |
TransformPointsInPlace | Mappar en punktarray i anroparägd lagring utan att allokera ytterligare en array |
TryTransformBounds | Ackumulerar omkastade punktgränser i ett pass och returnerar False för tomt indata |
TransformBounds | Ackumulerar omkastade punktgränser i ett pass eller genererar EPdfMatrixError för tomt indata |
TransformRect | Normaliserar och mappar en rektangel via en exakt axelparallell snabbväg eller snäva fyrahörnsgränser |
TransformRects | Mappar en rektangelarray med en enda resultat-allokering |
TransformRectsInPlace | Mappar en rektangelarray i anroparägd lagring utan att allokera ytterligare en array |
| Property | Type | Description |
|---|---|---|
a | Single | Skrivskyddat första matriselement |
b | Single | Skrivskyddat andra matriselement |
c | Single | Skrivskyddat tredje matriselement |
d | Single | Skrivskyddat fjärde matriselement |
e | Single | Skrivskyddat translation-X-element |
f | Single | Skrivskyddat translation-Y-element |
Handle | FS_MATRIX | Rått matrisvärde för PDFium-API:er som tar emot FS_MATRIX eller PFS_MATRIX |
TPdfMatrix använder PDF:s affina layout a b c d e f och postmultipliserar varje operation, så anropen läses i samma ordning som de transformeringar som appliceras på punkter
PreMultiply och Pre*-hjälparna lägger till operationer före den aktuella transformeringen, medan pivot-hjälparna bifogar translations-operation-translations-sekvenser som håller den valda pivoten fixerad
pmfContain bevarar hela källrektangeln med centrerad oanvänd yta och pmfCover fyller målet med centrerat överflöd, medan pmfStretch tillåter oberoende skalning i X och Y
Massmetoderna för punkter och rektanglar allokerar en utdataarray, deras in-place-varianter allokerar ingen, och TryTransformBounds avräknar omkastade punkter utan att bygga en mellanliggande array
Använd Handle med API:er som FPDFPageObj_SetMatrix, FPDFPageObj_Transform och FPDFText_SetMatrix
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;