ralf9
Messages postés14Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention14 mars 2010
-
27 mars 2008 à 21:51
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
31 mars 2008 à 21:09
bonjour !
voila j'ai un problème avec le pictureBox ??? j'ai fait un code qui charge une image dans pictureBox.
en suite j'ai fait des graphiques (lignes, points) que je dois afficher aussi dans la même pictureBox !!!!
voici mon code complet :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
g = Graphics.FromImage(bmp);
}
private Bitmap bmp;
private Graphics g;
int x, y, x2, y2, i;
// cette methode c'est juste pour recuperer la prostion de la souris quand je clique dans pictureBox
privatevoid pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
x = e.Location.X;
y = e.Location.Y;
i++;
dessin();
}
privatevoid dessin()
{
g.DrawEllipse(new Pen(Color.Red, 2.0f), new Rectangle(new Point(x, y), new Size(4, 4)));
// les testes c'est juste pour faire quand je clique deux fois je dessine une ligne
if(i % 2 != 0)
{
x2 = x;
y2 = y;
}
else
{
g.DrawLine(new Pen(Color.Red), new Point(x2, y2), new Point(x, y));
pictureBox1.Image = bmp;
}
}
}
}
le problème ici c'est que quand je charge l'image sur la pictureBox en
suite je dessine mon graphique la l'image disparaisse ???
qu'est ce que je dois faire pour éviter ce problème ? j'ai pensé a un
truc et ça marche ! c'est de mettre l'image en arrière plan de la
pictureBox mais je pense pas que c'est une bonne idée !! car je veux
récupérer a la fin l'image avec les graphiques (lignes et points)
dessus voila !!!
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 27 mars 2008 à 22:50
Salut
Voici un code fonctionnel
public Form1()
{
InitializeComponent();
bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
g = Graphics.FromImage(bmp);
}
private Bitmap bmp;
private Graphics g;
int x, y, x2, y2, i;
// cette methode c'est juste pour recuperer la prostion de la souris quand je clique dans pictureBox
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
x = e.Location.X;
y = e.Location.Y;
i++;
dessin();
}
private void dessin()
{
g.DrawEllipse(new Pen(Color.Red, 2.0f), new Rectangle(new Point(x, y), new Size(4, 4)));
// les testes c'est juste pour faire quand je clique deux fois je dessine une ligne
if (i % 2 != 0)
{
x2 = x;
y2 = y;
}
else
{
g.DrawLine(new Pen(Color.Red), new Point(x2, y2), new Point(x, y));
}
pictureBox1.Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Title = "Choose a shape...";
openFileDialog1.DefaultExt = "jpg";
openFileDialog1.Filter = "Files image JPEG (*.jpg)|*.jpg|Files bitmap(*.bmp)|*.bmp";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Bitmap img = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = img;
g = Graphics.FromImage(pictureBox1.Image);
ralf9
Messages postés14Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention14 mars 2010 28 mars 2008 à 00:28
salut !!!
merci pour ton aide !! désolé de te dire que ça na pas marché ! ben toujour le meme probleme la premiere image c'est bon mais pour le dessin non !
j'espere que t'as compris ce que je veux faire c'est de dessiner des lignes avec des points au dessus de l'image !!
ralf9
Messages postés14Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention14 mars 2010 29 mars 2008 à 13:46
salut !!
je viens de reessayer ton code et ca ne marche pas encore !! pas d'erreur de compilation mais par contre aucune ligne ni point se dessine au dessus de l'image
Vous n’avez pas trouvé la réponse que vous recherchez ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 29 mars 2008 à 22:44
Tu n'a surement pas
mis correctement mon code
la picture box est bien avec les attributs par defaut
sinon tu as une translation effectuer pour les remettre a l'echelle
exemple une image reduite par 5 dans la picture box ---> la ligne reduite par 5 dans la picturebox et donc peut invisible
essaye avec une image blanche et tes points rouge et tu veras mieux
ralf9
Messages postés14Date d'inscriptiondimanche 15 avril 2007StatutMembreDernière intervention14 mars 2010 31 mars 2008 à 00:02
salut
je ne peux pas me tromper car j'ai fait un copier/coller de ton code !! j'ai ajoute uniquement le code qui me permet d'ouvrir une image a partir du disque dur !! voila le code qui charge une image en utilisant le openFileDialog !!!
et sur la forme tu mets :
- openFileDialog
- saveFileDialog
- pictureBox
- menuStrip (load puis open et dans open tu mets le code pour ouvrir une image et sauve shape pour sauvgarder le contenu de pictureBox )
le resultat souhaite : mettre sur la pictureBox une image en suite quand je clique a l'interieur de pictureBox le programme dessine un point et si je clique une deuxieme fois le programme dessine un autre point et une ligne qui relie les deux points ! en suite quand tu sauvgarde l'image obtenue doit contenir les points et la ligne essaye ton code et tu veras si ca marche !!! (je pense pas ! j'ai meme pas pu dessiner les deux points et la ligne avec)
a+
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 31 mars 2008 à 21:09
Apres avoir reparé une petite erreur (utilisation de img à la place de bmp)
Mon code fonctionne pour la sauvegarde aussi
Il te reste a faire la sauvegarde multi format (elle ne fait que le gif sur un bouton la mienne.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Drawing.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Bitmap bmp;
private Graphics g;
int x, y, x2, y2, i;
// cette methode c'est juste pour recuperer la prostion de la souris quand je clique dans pictureBox
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
x = e.Location.X;
y = e.Location.Y;
i++;
dessin();
}
private void dessin()
{
g.DrawEllipse(new Pen(Color.Red, 2.0f), new Rectangle(new Point(x, y), new Size(4, 4)));
// les testes c'est juste pour faire quand je clique deux fois je dessine une ligne
if (i % 2 != 0)
{
x2 = x;
y2 = y;
}
else
{
g.DrawLine(new Pen(Color.Red), new Point(x2, y2), new Point(x, y));
}
pictureBox1.Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Title = "Choose a shape...";
openFileDialog1.DefaultExt = "jpg";
openFileDialog1.Filter = "Files image JPEG (*.jpg)|*.jpg|Files bitmap(*.bmp)|*.bmp";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
bmp = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = bmp;
g = Graphics.FromImage(bmp);