Voilà, encore un de plus( je me sens complètement c**)
Mon problème cette fois est le suivant. J'ai trouver comment faire pour dessiner sur mon image. Le problème est que les coordonnées ne correspondent pas. Lorsque je dessine un trait, il prend les position de la souris dans la fenêtre et placent celles-ci dans le picturebox.
Je m'explique, je sélectionne l'option pour dessiner un trait sur mon image avec la fonction suivante: ( je change simplement le curseur )
Alors, lorsque je suis dans ma picturebox et que j'enfonce le bouton de la souris, j'appel le code : (je recupère la premier position du clic )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void _pnlobTrait_Click(object sender, EventArgs e) {/* Graphics g = _pbImage.CreateGraphics(); Pen Pinceau=new Pen(Red,2); */ Cursor.Current = Cursors.Cross; /* g.DrawLine(Pinceau, new Point(MousePosition.X, MousePosition.Y), new Point(0, 0)); g.Dispose(); Cursor.Current = Cursors.Default;*/ }
Et quand je relâche le bouton de la souris: (je recupère la deuxième position du clic)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private void _pbImage_MouseDown(object sender, MouseEventArgs e) { Pos1X = Cursor.Position.X; Pos1Y = Cursor.Position.Y; }
Par contre, les coordonnées qu'il prend lorsque je fait le _pbImage_MouseDown(), sont les coordonnées dans toute la fenêtre, et quand je fait le _pbImage_MouseUp(), il récupère encore un fois les coordonnées de la souris dans la fenêtre en entier. Par contre, quand il va dessiner le trait, il utilise le point d'origine de la pictureBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void _pbImage_MouseUp(object sender, MouseEventArgs e) { Pos2X = MousePosition.X; Pos2Y = MousePosition.Y; Cursor.Current = Cursors.Default; Graphics g = _pbImage.CreateGraphics(); Pen p = new Pen(Color.Red, 2); g.DrawLine(p, new Point(Pos1X, Pos1Y), new Point(Pos2X, Pos2Y)); g.Dispose(); }
Maintenant, j'aurais aimer savoir si il existe une autre façon de redessiner mon trait que en faisant un calcul qui prendrait en compte toute la fenêtre. Ou alors est ce que je dois placer toute ma fenêtre en objet Graphics? Le problème je pense en effectuant cette dernière solution est que je pourrait dessiner en dehors de ma pictureBox, ce que je ne veux pas pouvoir faire.
Quelqu'un pourrait-il me guider?
Merci d'avance, Richard_sraing
Partager