Dessiner avec la souris

Messages postés
5
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
23 avril 2005
- - Dernière réponse : 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.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
1
Merci
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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
27
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
14 octobre 2008
2
0
Merci
Bonjour!
Je dois être un peu nulle mais ça me dessine rien du tout ....
Babou
Commenter la réponse de babou6a
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
0
Merci
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# 
Commenter la réponse de MorpionMx
Messages postés
27
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
14 octobre 2008
2
0
Merci
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é
Commenter la réponse de babou6a
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
41
0
Merci
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# 
Commenter la réponse de MorpionMx
Messages postés
27
Date d'inscription
samedi 19 juin 2004
Statut
Membre
Dernière intervention
14 octobre 2008
2
0
Merci
Ok c'est ce que je vais faire! Merci beaucoup!
Babou
Commenter la réponse de babou6a