Bezeichnung
TransformBrush -- wendet eine affine Transformation auf einen Pinsel an (V4.5)
Übersicht
TransformBrush(id, sx, rx, ry, sy[, smooth])
Beschreibung
Dieser Befehl kann verwendet werden, um eine affine Transformation auf einen Pinsel anzuwenden. Sie müssen eine 2x2 Transformationsmatrix diesem Befehl übergeben, die definiert, wie jedes Pixel in dem Pinsel umgewandelt wird. Dieser Befehl ist nützlich, wenn Sie Rotation und Skalierung gleichzeitig anwenden möchten. Natürlich könnte man dies mit Aufrufen der Befehle ScaleBrush() und RotateBrush() erledigen, aber dies würde zu Qualitätsverlusten führen. Wenn Sie die Transformation stattdessen mit TransformBrush() durchführen, wird alles in einem einzigen Durchlauf durchgeführt.

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

sx:
Gibt den Faktor der Skalierung für die x-Achse an und darf nicht Null sein. Wenn er negativ ist, wird das Bild zusätzlich auf der y-Achse gekippt.

rx:
Gibt den Faktor der Drehung auf der x-Achse an und gegenüber sx und sy kann dies auch 0 sein.

ry:
Gibt den Faktor der Drehung auf der y-Achse wie rx an und kann wie rx auch 0 sein.

sy:
Gibt den Faktor der Skalierung für die y-Achse an und darf wie sx nicht Null sein. Wenn er negativ ist, wird das Bild zusätzlich auf der x-Achse gekippt.

Die Identitätsmatrix ist definiert als

 
( 1  0 )
( 0  1 )

Wenn Sie diese Matrix übergeben, dann wird keine Transformation durchgeführt werden, da keine Rotation und keine Skalierung festgelegt wurde. Wenn Hollywood diese Matrix auf jeden Pixel in Ihrem Pinsel anwenden würde, wäre das Ergebnis nur eine Kopie des Pinsels. Wenn aber TransformBrush() eine Einheitsmatrix erkennt, wird dieser Befehl nichts tun.

Optional können Sie das Argument smooth auf True setzen, um Antialiasing beim Transformieren zu benutzen, welches zu einem glatteren Aussehen führt, aber dessen Berechnung länger dauert.

Bitte beachten Sie: Sie sollten beim Transformieren immer eine Kopie des Originalpinsel benutzen. Zum Beispiel, wenn Sie Pinsel 1 auf 12x8 skalieren und später wieder auf 640x480 transformieren, erhalten Sie ein völlig unbrauchbares Bild. Deshalb sollten Sie immer vom Originalpinsel eine Kopie erstellen und erst dann transformieren.

Beachten Sie, dass TransformBrush() bei Vektorpinseln immer mit dem nicht transformierten Pinsel angewendet wird. Das bedeutet, dass alle vorherigen Transformationen, die mit TransformBrush(), ScaleBrush() oder RotateBrush() auf den Pinsel angewendet wurden, beim Aufruf von TransformBrush() rückgängig gemacht werden.

Weitere Pinseleffekte: ArcDistortBrush(), BarrelDistortBrush(), BlurBrush(), BrushToGray(), BrushToMonochrome(), CharcoalBrush(), ContrastBrush(), EdgeBrush(), EmbossBrush(), FlipBrush() Befehl, GammaBrush(), InvertBrush() Befehl, MixBrush(), ModulateBrush(), OilPaintBrush(), PerspectiveDistortBrush(), PixelateBrush(), PolarDistortBrush(), RotateBrush(), SepiaToneBrush(), ScaleBrush(), SharpenBrush(), SolarizeBrush(), SwirlBrush(), TintBrush() und WaterRippleBrush().

Eingaben
id
Identifikator des Pinsels, der transformiert wird
sx
Skalierungsfaktor x; darf nie 0 sein
rx
Rotierungsfaktor x
ry
Rotierungsfaktor y
sy
Skalierungsfaktor y; darf nie 0 sein
smooth
optional: Mit True wird Antialiasing bei der affine Transformation verwendet (Standard ist False)
Beispiel
angle = Rad(45)    ; konvertiert Grad in Radiant
TransformBrush(1, Cos(angle), Sin(angle), -Sin(angle), Cos(angle))
Der obige Code dreht den Pinsel 1 um 45 Grad.

Navigation zeigen