Salut à tous,
Sauriez-vous comment je pourrais permettre à l'utilisateur de créer une ligne un peu comme avec le crayon à la Paint ?
En gros j'ai pensé à un évènement MouseDown appliqué à un canvas qui placerait un rectangle aux coordonnées du click :
mais ça ne marche pas le rectangle se retrouve en haut à gauche du canvas quand je relache la souris au-dessus de lui et il reste à sa place si je relache la souris à côté mais il n'y a pas d'autres rectangles créés à côté pour faire une ligne,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private void dessin_MouseDown(object sender, MouseButtonEventArgs e) { // Get the position of the element relative to the Canvas. Point point = e.GetPosition(this.dessin); if (e.ButtonState == Mouse.LeftButton) { Rectangle rec=new Rectangle(); rec.Height=4; rec.Width=4; rec.Fill=Brushes.Black; dessin.Children.Add(rec); rec.SetCurrentValue(Canvas.TopProperty, point.Y); rec.SetCurrentValue(Canvas.LeftProperty, point.X); } }
Auriez-vous une idée comment faire cela ?
Merci d'avance
EDIT :
en fait j'ai réussi à peu près à faire le truc avec un evt MouseMove mais j'ai toujours un pb : lorsque l'utilisateur bouge rapidement la souris la ligne est discontinue, peut -on corriger ça ?
EDIT : bon j'ai trouvé la solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void dessin_MouseMove(object sender, MouseEventArgs e) { UIElement element = e.OriginalSource as UIElement; if (element == null) return; // Get the position of the element relative to the Canvas. Point point = e.GetPosition(this.dessin); if (e.LeftButton==MouseButtonState.Pressed) { Ellipse rec = new Ellipse(); rec.Height = 4; rec.Width = 4; rec.Fill = Brushes.Black; dessin.Children.Add(rec); rec.SetCurrentValue(Canvas.TopProperty, point.Y); rec.SetCurrentValue(Canvas.LeftProperty, point.X); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 private void dessin_MouseDown(object sender, MouseButtonEventArgs e) { // Get the position of the element relative to the Canvas. debut = e.GetPosition(this.dessin); } void dessin_MouseMove(object sender, MouseEventArgs e) { UIElement element = e.OriginalSource as UIElement; if (element == null) return; // Get the position of the element relative to the Canvas. Point point = e.GetPosition(this.dessin); if (e.LeftButton==MouseButtonState.Pressed) { Line ligne = new Line(); ligne.Stroke = Brushes.Black; ligne.StrokeThickness = 4; dessin.Children.Add(ligne); ligne.X1 = debut.X; ligne.Y1 = debut.Y; ligne.X2 = point.X; ligne.Y2 = point.Y; debut = point; } }
Partager