Salut,
ich möchte eine Bézierkurve zeichnen. Dafür gibt es zwar die DrawBezier-Methode der Graphics-Klasse, allerdings möchte ich zusätzlich die gezeichnete Linie mit fortlaufender Länge verjüngen (sprich die Linie wird immer dünner).
Jetzt hatte ich im Web gelesen, dass ich mir von der GraphicsPath-Klasse die Zwischenpunkte berechnen lassen können soll. Ein Beispiel dafür habe ich leider nicht gefunden und mein Probecode funktioniert auch nicht:
Point[] myPoints = {new Point(0,0), new Point(100,100), new Point(200,0)};
Byte[] myTypes = {(byte)System.Drawing.Drawing2D.PathPointType.Bezier,
(byte)System.Drawing.Drawing2D.PathPointType.Bezier,
(byte)System.Drawing.Drawing2D.PathPointType.Bezier};
System.Drawing.Drawing2D.GraphicsPath a =
new System.Drawing.Drawing2D.GraphicsPath(myPoints, myTypes);
a.Flatten();
Wenn es sich vermeiden lassen könnte, würde ich gerne auf die Durcharbeitung der ganzen Theorie in der Wikipedia verzichten...
Kann mir da jemand weiterhelfen?
Danke im Voraus,
Stefan
Hallo vbtricks,
Warum funktioniert dein Code nicht? Für mich ist das alles korrekt. Du müsstest jetzt per a.PathPoints deine berechneten Zwischenpunkte auslesen können.
Oder bekommst du irgendeinen Fehler?
Gruß,
Thomas
A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee
Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.
Salut,
wenn ich
foreach (PointF curPoint in a.PathPoints)
{
MessageBox.Show(curPoint.ToString());
}
nach Flatten ausführe, erhalte ich eine Exception "Parameter invalid".
Stefan
Salut,
es müssen mindestens exakt Punkte sein, dann funktioniert's.
Stefan