Du machst eine
List<Point> auf!
in dem du alle MausPositionspunkte aus den EventArgs des MouseMove-Ereignisses speicherst.
Am besten prüfst du auch noch ob die linke Maustaste gedrückt wurde!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| List<Point> Points = new List<Point> { }; private void Form1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) {
Points.Add(e.Location); } } |
dann kannst du im Paint-Ereigniss deiner Form die Punkte aus Points durch einen Spline verbinden!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void Form1_Paint(object sender, PaintEventArgs e) { Brush brush=new SolidBrush(Color.Red);
if (Points.Count > 0) { e.Graphics.DrawCurve(new Pen(brush), Points.ToArray()); } } |
eventuell musst du noch nach dem Einfügen von Punkten, die Form Refreshen.
Dann noch beim loslassen der linken Maustaste Points leeren!
Damit verlierst du zwar die alten Linien, kannst sie aber in einer seperaten Liste:
List<List<Points>>ListPoints speichern und dann immer alle Splines zeichnen lassen!
Wenn dir das nicht reicht, kannst noch über die OOP eine eigene Klasse Spline erstellen, in der du dann, Farbe, Pinselstärke,Punkte etc. speicherst und beim zeichen dann ausgibst!
Soweit mal zur Realisierung von Paint, ein bisschen Feinschliff könnte das Konzept noch vertragen aber da kannst du noch herumspielen!
Für sonstige Fragen bitte einen eigenen Thread bzw. PN
mfg Christoph