Hallo,
in einer WinForm wird eine Linie grafisch ausgeben. Auf dieser Linie
soll ein Rechteck zentriert gesetzt werden das entlang der Line sich
bewegen soll. Wenn ich das Rechteck entlang der Linie fahren lasse, dann
werden die zuvor gezeichneten Rechtecke nicht gelöscht und die Linie ist
nicht mehr zu sehen. Gibt es in C# eine spezielle Methode, dass die
zuvor gezeichneten Elemente nicht mehr dargestellt werden?
Moin,
Du scheinst nicht in OnPaint zu zeichnen.
Du machst die Berechnung der Position in einem TimerTick und rufst dann
Invalidate() auf.
Zusätzlich musst die die OnPaint Methode deines Fensters (oder besser
nur deines Controls, in dem du Zeichnen möchtest) überschreiben.
1
public override void OnPaint(sender s, PaintEventArgs e){
2
base.OnPaint(s,e);
3
ZeichneMeinRechteckHier();
4
}
PS: Code ist aus dem Gedächtnis geschrieben und wird warscheinlich so
nicht richtig sein. Schau am Besten in der MSDN nach.
Zusätzlich musst du das DoubleBuffering der Form aktivieren. Das kannst
du bei den Eigenschaften finden.
Entweder musst du das Control vor dem Zeichnen einer
neuen Position mit dem Hintergund überpinseln und
dann Linie + Rechteck neu zeichnen oder du zeichnest
vor einer neuen Position noch einmal an der alten Position
mit der Hintergundfarbe Linie + Rechteck.
Bsp: https://www.mycsharp.de/wbb2/thread.php?threadid=21782
merciless
In dem obigen C# Code bewegt sich ein Rechteck auf einer Linie. Das
funktioniert soweit. Wie kann ich nun veranlassen dass das Rechteck in
einer vorgegebenen Kurve entlang fährt?
Ja, es ist realisierbar, entweder mit Mathematik, Pixel Scanning oder
einfach mit WPF, siehe hier:
http://www.blackwasp.co.uk/WPFPathAnimation.aspx ist das nicht genau das
was du suchst? Da ist noch nicht mal Code-Behind drinn.
Gruß Sven
Hab mir die Beispiel genauer angeschaut. Wenn ich allerdings dies für
meine Anforderungen anpassen will dann gelingt mir dies nicht. Ich
habe quasi immer Liniensegmente und ein oder zwei Kurvensegmente (90°).
Das mit WPF Path Animation umzusetzen ist nun auch nicht so einfach.
Die obige Grafik(GrafischeAusgabe.PNG ) zeigt ein Liniensegment und ein
Kurvensegment. Auf diesen beiden Segmenten soll ein Rechteck (Fahrzeug)
zentriert entlangfahren können.
Der folgende Codeausschnitt zeigt, wie man in C# ein Rechteck darstellt
und
dreht. leider ist es mir bisher nicht gelungen, dass das Rechteck
zentriert entlang der Kurve fährt.
Für jede Hilfe würde ich mich freuen.