Dessiner cercle c#

Signaler
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
-
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
-
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# ---
A voir également:

5 réponses

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

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# ---
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

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# ---
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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#
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

Oui c'est la deuxieme solution que j'avais retenue. Merci pour ton aide.
--- Moucave , petit singe au pays du c# ---
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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#