Bonjour à tous,
voilà j'ai une mainwindow dans laquelle j'ai un canvas (qui s'appelle dessin) avec lequel je peux dessiner des trucs 'à la paint', dont le code a l'air de marcher plutôt bien :
En fait ça fait même un peu plus que ça puisque ça trace le symétrique du dessin par rapport à la ligne médiane du canvas.
Le truc c'est que je voulais avoir la même fonction sur une autre fenêtre (classe Debit) que j'ouvrirai en cliquant sur un bouton :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public MainWindow() { InitializeComponent(); this.dessin.MouseMove += new MouseEventHandler(dessin_MouseMove); } private Point debut; private Point debut2; private void dessin_MouseDown(object sender, MouseButtonEventArgs e) { debut = e.GetPosition(this.dessin); debut2.X = debut.X; debut2.Y = dessin.ActualHeight - debut.Y; } void dessin_MouseMove(object sender, MouseEventArgs e) { UIElement element = e.OriginalSource as UIElement; if (element == null) return; Point point = e.GetPosition(this.dessin); Point point2 = new Point(); point2.X = point.X; point2.Y = dessin.ActualHeight - point.Y; 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; Line ligne2 = new Line(); ligne2.Stroke = Brushes.Green; ligne2.StrokeThickness = 4; dessin.Children.Add(ligne2); ligne2.X1 = debut2.X; ligne2.Y1 = debut2.Y; ligne2.X2 = point2.X; ligne2.Y2 = point2.Y; debut2 = point2; } }
et le code de la classe Debit (sui hérite de Window) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Debit windowDebit = new Debit(); private void ButtonDebit_Click(object sender, RoutedEventArgs e) { windowDebit.ShowDialog(); }
Mais ça ne marche pas , quand je clique sur le bouton la fenêtre s'affiche mais je ne peux rien faire (même pas cliquer sur les boutons de la fenêtre Debit)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 public partial class Debit : Window { public Debit() { InitializeComponent(); Line ligneOrdonnee = new Line(); ligneOrdonnee.X1 = 30; ligneOrdonnee.X2 = 30; ligneOrdonnee.Y1 = 30; ligneOrdonnee.Y2 = 340; ligneOrdonnee.Stroke = (Brush)this.Resources["BrushBlueLine"]; ligneOrdonnee.StrokeThickness = 3; repereDebit.Children.Add(ligneOrdonnee); Line ligneAbscisse = new Line(); ligneAbscisse.X1 = 30; ligneAbscisse.X2 = 470; ligneAbscisse.Y1 = 340; ligneAbscisse.Y2 = 340; ligneAbscisse.Stroke = (Brush)this.Resources["BrushBlueLine"]; ligneAbscisse.StrokeThickness = 3; repereDebit.Children.Add(ligneAbscisse); this.repereDebit.MouseMove += new MouseEventHandler(repereDebit_MouseMove); } private Point debut; private void repereDebit_MouseDown(object sender, MouseButtonEventArgs e) { // Get the position of the element relative to the Canvas. debut = e.GetPosition(this.repereDebit); } void repereDebit_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.repereDebit); if (e.LeftButton == MouseButtonState.Pressed) { Line ligne = new Line(); ligne.Stroke = Brushes.Black; ligne.StrokeThickness = 4; repereDebit.Children.Add(ligne); ligne.X1 = debut.X; ligne.Y1 = debut.Y; ligne.X2 = point.X; ligne.Y2 = point.Y; debut = point; } } }
Auriez-vous une idée ? Je ne sais pas trop comment utiliser Window.Show() et Window.ShowDialog()
Merci d'avance pour votre aide, et n'hésitez pas si vous avez la moindre suggestion, please help me !!
Partager