Dessiner avec la souris

manou2005 Messages postés 5 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 23 avril 2005 - 14 mars 2005 à 09:54
babou6a Messages postés 27 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 14 octobre 2008 - 5 juin 2006 à 10:04
Salut tout le monde,
je voudrais recevoir un bout de code sur comment tracer des formes géométriques avec la souris, dans un panel de la fenetre qui s'affichera.
Merci.

6 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
Modifié le 24 sept. 2019 à 16:09
Tiens, voici un exemple tres tres sommaire d'un panel qui te permet de tracer un rectangle dedans (et seulement du haut vers le bas).
Ca te permettra de comprendre comment dessiner dans un controle.


using
 System;
using System.Drawing;
using System.Windows.Forms;

namespace Test
{
public class MyPanel : Panel
{

private bool mouseDown;
private Point startPoint;
private Size size;
private Pen p = new Pen(Color.Black, 1.0f);

public MyPanel()
{
this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true);
this.MouseDown += new MouseEventHandler(MyPanel_MouseDown);
this.MouseUp += new MouseEventHandler(MyPanel_MouseUp);
this.MouseMove +=new MouseEventHandler(MyPanel_MouseMove);
}

private Bitmap backBuffer;
protected override void OnPaint(PaintEventArgs e)
{if(backBuffer <bold>null) backBuffer</bold> new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(backBuffer);
g.Clear(Color.White);
if(mouseDown)
g.DrawRectangle(p, new Rectangle(startPoint, size));

g.Dispose();
e.Graphics.DrawImageUnscaled(backBuffer, 0, 0);
}

private void MyPanel_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
startPoint = new Point(e.X, e.Y);
}

private void MyPanel_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}

private void MyPanel_MouseMove(object sender, MouseEventArgs e)
{
if(mouseDown)
{
size = new Size(e.X - startPoint.X, e.Y - startPoint.Y);
this.Invalidate(); 
// Redessine la feneter
}
}
}
}


Bonne continuation

Mx
1
babou6a Messages postés 27 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 14 octobre 2008 2
4 juin 2006 à 21:26
Bonjour!
Je dois être un peu nulle mais ça me dessine rien du tout ....
Babou
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
4 juin 2006 à 22:05
Salut,

Je viens de restester, pourtant ca marche.
Le panel a un fond blanc, et un cliqué / déplace de la souris dedans dessine le rectangle.

Qu'est ce qui se produit chez toi ?

Mx
MVP C# 
0
babou6a Messages postés 27 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 14 octobre 2008 2
4 juin 2006 à 22:38
Ah ben nan je suis nulle en fait ^^ ... j'avais fé une bétise ...
Mais est ce que ton code permet de faire plusieurs rectangles ? Le buffer de bitmap devrait retenir les autres rectangles déja dessiné nan ?
Babou ... désolé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 09:26
En fait non, parce que l'instruction g.Clear(Color.White); repeint tout en blanc.
Ce n'etait vraiment qu'un exemple pour montrer comment dessiner, mais il va falloir modifier pas mal de choses si tu souhaites conserver les rectangles dessinés. (faire une List<Rectangle> pas exemple, conserver tout ceux que tu as dessiné dedans, et les redessiner dans le OnPaint).

Le mieux serait que tu recrées un sujet dans le forum en nous expliquant exactement ce que tu souhaites faire, pour qu'on te donne des réponses appropriées :)
Mx
MVP C# 
0
babou6a Messages postés 27 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 14 octobre 2008 2
5 juin 2006 à 10:04
Ok c'est ce que je vais faire! Merci beaucoup!
Babou
0
Rejoignez-nous