Dessiner cercle c#

Moucave
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
- 21 juil. 2005 à 17:13
Moucave
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
- 22 juil. 2005 à 22:08
Bonjour,
Voici mon probleme.J'aimerai dessinner un cercle dans une picturebox au dessus d'une image (image deja chargee dans la picture box avant de dessinner). De plus j'aimerai que mon cercle se dessinne a l'endroit ou je clique avec la souris. Pour le moment j'essaie de faire un rectangle mais rien ne se passe, voici mon code:


private
void pictureBox_MouseDown(
object sender, System.Windows.Forms.MouseEventArgs e)
{
m_debut_rect =
new Point(e.X, e.Y);
}

private
void pictureBox_MouseUp(
object sender, System.Windows.Forms.MouseEventArgs e)
{
Bitmap bmp =
new Bitmap(pictureBox_map.Image, pictureBox_map.Size);
Graphics g = Graphics.FromImage(bmp);
Rectangle rectangle = Rectangle.FromLTRB(m_debut_rect.X, m_debut_rect.Y, e.X, e.Y);
g.DrawRectangle(Pens.Black, rectangle);
pictureBox_map.Image = bmp;

this.Invalidate();

}

Quelqu'un pourrait t'il m'aider? Merci d'avance.

--- Moucave , petit singe au pays du c# ---

5 réponses

Moucave
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

21 juil. 2005 à 19:23
Ok j'y arrive mais ce n'est pas vraiment la facon dont je veux proceder. Le truc c'est que je capture l'image en cours dans ma picturebox, je dessine dessus et je le reinjecte dans ma picture box. Voici le code:

private
void pictureBox_map_mousedown(
object sender, System.Windows.Forms.MouseEventArgs e)
{
x=e.X;
y=e.Y;
Bitmap bmp =
new Bitmap(pictureBox_map.Image, pictureBox_map.Size);
pictureBox_map.Image.Dispose();
//liberation desz ressources
Graphics g = Graphics.FromImage(bmp);
Pen pen =
new Pen(
new SolidBrush(Color.Black));
g.DrawRectangle(pen,x,y,5,5);
SolidBrush mySolidBrush =
new SolidBrush(Color.Red);
g.FillRectangle(mySolidBrush,x,y,5,5);
pictureBox_map.Image = bmp;
}

Le probleme est si je veux l'effacer en recliquant dessus par exemple, je ne pourrai pas l'effacer car il est incruste dans mon image jpg. Ma question est la suivante : Comment dessiner sur l'image de la picturebox (sorte de calque possedant mes objets cercles) sans incruster les cercles dans l'image??
Merci.

--- Moucave , petit singe au pays du c# ---
0
Moucave
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

22 juil. 2005 à 16:49
Salut coq! Merci de m'avoir repondu mais je ne suis pas certain d'avoir tout compris. Pourrais tu me reexpliquer ta solution plus viable?

--- Moucave , petit singe au pays du c# ---
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
22 juil. 2005 à 21:58
Hum, je pensais que tu voulais tout effacer, et dans ce cas il suffisiait que tu gardes dans une instance d'Image une copie de ton image de base non modifié afin de la copier dans la propriété Image du PictureBox au moment de l'effacement.
Mais si ton but est de pouvoir supprimer certaines formes et pas les autres il va falloir que tu persistes leurs infos de dessin, et que tu les redessines à chaque suppression de l'une d'entres elles (pour l'ajout il suffit de dessiner la nouvelle sans repartir du debut).

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Moucave
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

22 juil. 2005 à 22:08
Oui c'est la deuxieme solution que j'avais retenue. Merci pour ton aide.
--- Moucave , petit singe au pays du c# ---
0

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

Posez votre question
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
21 juil. 2005 à 23:25
Salut,

Pour créer l'objet Graphics sur la surface du controle PictureBox :
Graphics g = pictureBox_map.CreateGraphics();

Autre solution, plus viable à mon avis, serait de persister l'image originale à part, afin de la réaffecter au controle pour l'effacement.

Cocoricoooooooo !!!!
coq
MVP Visual C#
-1