Hallo Miteinander.
Ich habe eine Anwendung welche mir diverse Symbole zeichnet. Abgelegt habe ich diese als SVG Pfad Daten. Hier ein Beispiel:
Code :
1
M 0 4.582822 C 1.4723926 6.0552147 2.9447853 7.5276073 4.4171779 9 5.2379593 7.9996605 6.10149 7.0095514 7.1776354 6.2754916 7.9691393 5.6560537 8.7606431 5.0366158 9.552147 4.4171779 8.0981593 2.9447853 6.6441717 1.4723926 5.190184 0 4.4042112 1.001327 3.3925518 1.7870792 2.5131327 2.7003451 1.7501999 3.4222041 0.89516613 4.0363242 0 4.582822 z

Um diesen Pfad zu zeichnen, spalte ich diesen String bei den Leerzeichen und zeichne nach und nach die angegebenen Komandos (M- MoveTo, C - CurveTo,...). Zu diesen Koordinaten werden entsprechende X/Y Werte hinzuaddiert sodass ich die Symbole an eine gewünschte Position zeichnen kann. (Translation).
Bei einigen Symbolen möchte ich nun auch eine entsprechende Breite erzwingen. (bspw. ein spezieller Bogen von einem Element zum nächsten). Dazu muss ich auf den verfügbaren Pfad zuvor eine entsprechende Skalierung anwenden. Im .net Framework würde man für diesen Fall einfach eine MatrixTransformation auf einen GraphicsPath durchführen:

Code csharp:
1
2
3
4
GraphicsPath p;
Matrix m = new Matrix();
m.Scale(scaleX, scaleY);
p.Transform(m);

Wie kann ich nun in meinem eigenen Quellcode eine derartige Skalierungstransformation umsetzen? Hat jemand diesbezüglich einen Algorithmus?

Grüße
Daniel