Bezeichnung
TransformTextObject -- wendet eine affine Transformation auf ein Textobjekt an (V10.0)
Übersicht
TransformTextObject(id, sx, rx, ry, sy[, smooth])
Beschreibung
Dieser Befehl kann verwendet werden, um eine affine Transformation auf ein Textobjekt anzuwenden. Sie müssen diesem Befehl eine 2x2-Transformationsmatrix übergeben, die definiert, wie jedes Pixel im Textobjekt transformiert wird. Dieser Befehl ist nützlich, wenn Sie gleichzeitig Drehung und Skalierung anwenden möchten. Natürlich könnte man das mit Aufrufen von ScaleTextObject() und dann RotateTextObject() machen, aber das würde zu Qualitätseinbußen führen. Wenn Sie die Transformation stattdessen mit TransformTextObject() durchführen, wird alles in einem einzigen Durchlauf erledigt.

Die 2x2-Transformationsmatrix besteht aus vier Fließkommafaktoren:

sx:
Gibt den Skalierungswert auf der x-Achse an. Dieser darf nicht Null sein. Wenn er negativ ist, wird das Textobjekt auf der y-Achse gespiegelt.

rx:
Gibt den Grad der Drehung auf der x-Achse an. Dies kann 0 sein.

ry:
Gibt den Grad der Drehung auf der y-Achse an. Dies kann 0 sein.

sy:
Gibt den Skalierungswert auf der y-Achse an. Dieser darf nicht Null sein. Wenn er negativ ist, wird das Textobjekt auf der x-Achse gespiegelt.

Die Identitätsmatrix ist definiert als

 
( 1  0 )
( 0  1 )

Wenn Sie diese Matrix übergeben, wird keine Transformation angewendet, da keine Rotation und keine Skalierung definiert sind. D.h. wenn Hollywood diese Matrix auf jedes Pixel in Ihrem Textobjekt anwenden würde, wäre das Ergebnis nur eine Kopie des Textobjekts. Aber wenn TransformTextObject() feststellt, dass Sie eine Identitätsmatrix übergeben haben, wird es natürlich sofort zurückkehren und nichts tun.

Das optionale Argument smooth kann auf True gesetzt werden, wenn Hollywood bei der Transformation interpolieren soll. Dies führt zu Ergebnissen, die besser aussehen, aber die Interpolation ist ziemlich langsam.

Bitte beachten Sie: Sie sollten Transformationsoperationen immer mit dem ursprünglichen Textobjekt durchführen. Wenn Sie beispielsweise Textobjekt 1 in 12 x 8 Pixel skalieren und es dann wieder in 640 x 480 umwandeln, erhalten Sie ein durcheinandergebrachtes Textobjekt. Daher sollten Sie immer das ursprüngliche Textobjekt behalten und nur Kopien davon transformieren.

Beachten Sie, dass TransformTextObject() bei Vektortextobjekten immer auf dem nicht transformierten Textobjekt operiert. Das bedeutet, dass alle vorherigen Transformationen, die mit TransformTextObject(), ScaleTextObject() oder RotateTextObject() auf das Textobjekt angewendet wurden, rückgängig gemacht werden, wenn TransformTextObject() aufgerufen wird.

Eingaben
id
ID des zu transformierenden Textobjekts
sx
Faktor x skalieren; darf nie 0 sein
rx
Faktor x drehen
ry
Faktor y drehen
sy
Faktor y skalieren; darf nie 0 sein
smooth
optional: ob die affine Transformation Interpolation verwenden soll oder nicht
Beispiel
angle = Rad(45)    ; convert degrees to radians
TransformTextObject(1, Cos(angle), Sin(angle), -Sin(angle), Cos(angle))
Der obige Code dreht das Textobjekt Nummer 1 um 45 Grad unter Verwendung einer 2x2-Transformationsmatrix.

Navigation zeigen