pg00753k
Messages postés1Date d'inscriptionlundi 5 mars 2012StatutMembreDernière intervention14 mars 2012
-
14 mars 2012 à 17:09
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023
-
14 mars 2012 à 21:13
alors j essai de m expliquer correctement je fais un logiciel de dessin en c# je veux y integrer une fonction copier coller elle ne fonctionne pas correctement l evenement click je crée un rectangle avec le mouse down et mouse up pour selectionner la zone a copier et au click de coller j ajoute cette image a une liste qui est dessiner dans l evenement paint de mon panel voila je copie mon code entier..
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 _1._2._3.Peinture____
{
public partial class Principale : Form
{
// INITIALISATIONS
// IMAGES
Bitmap cocher = new Bitmap(@"C:\Users\peillon\Documents\iut\ptut\1. 2. 3. Peinture !!!\Icone\valider.png");
Bitmap image, image2;//pour enregistrer/ouvrir
Bitmap zéro;//image origine vierge
Bitmap im_copier;
//RECTANGLES
bool rectangle = false;//vrai si on trace un rectagle
//VIDE
public struct Rectangle_couleur_epaisseur// on crée une structure pour avoir un rectagle complet (rect+couleur+epaisseur)
{
public Rectangle Rect;
public Pen Pen;
public Rectangle_couleur_epaisseur(Rectangle rect, Color color, decimal ep)
{
Rect = rect;
float epp = (float)ep;
Pen = new Pen(color, epp);
}
}
List<Rectangle_couleur_epaisseur> listeRectangle_couleur_epaisseur = new List<Rectangle_couleur_epaisseur>(); // un tableau de rectangle complet
Rectangle recTempo = new Rectangle(); // un rectangle temporaire
//PLEIN
public struct Rectangle_couleur_epaisseur_plein// on crée une structure pour avoir un rectagle complet (rect+couleur+epaisseur)
{
public Rectangle Rect_plein;
public SolidBrush Pen_plein;
public Rectangle_couleur_epaisseur_plein(Rectangle rect_plein, Color color)
{
Rect_plein = rect_plein;
Pen_plein = new SolidBrush(color);
}
}
List<Rectangle_couleur_epaisseur_plein> listeRectangle_couleur_epaisseur_plein = new List<Rectangle_couleur_epaisseur_plein>(); // un tableau de rectangle plein
Rectangle recTempo_plein = new Rectangle(); // un rectangle plein temporaire
//OVALE
bool ovale = false;//vrai si on trace un rectagle
//VIDE
public struct Ovale_couleur_epaisseur// on crée une structure pour avoir un rectagle contenant l ovale complet (rect+couleur+epaisseur)
{
public Rectangle Rect;
public Pen Pen;
public Ovale_couleur_epaisseur(Rectangle rect, Color color, decimal ep)
{
Rect = rect;
float epp = (float)ep;
Pen = new Pen(color, epp);
}
}
List<Ovale_couleur_epaisseur> listeOvale_couleur_epaisseur = new List<Ovale_couleur_epaisseur>(); // un tableau de rectangle contenant les ovales complet
Rectangle ovaTempo = new Rectangle(); // un rectangle contenant l ovale temporaire
//PLEIN
public struct Ovale_couleur_epaisseur_plein// on crée une structure pour avoir un rectagle contenant l ovale complet (rect+couleur+epaisseur)
{
public Rectangle Rect_plein;
public SolidBrush Pen_plein;
public Ovale_couleur_epaisseur_plein(Rectangle rect_plein, Color color)
{
Rect_plein = rect_plein;
Pen_plein = new SolidBrush(color);
}
}
List<Ovale_couleur_epaisseur_plein> listeOvale_couleur_epaisseur_plein = new List<Ovale_couleur_epaisseur_plein>(); // un tableau de rectangle contenant l ovale plein
Rectangle ovaTempo_plein = new Rectangle(); // un rectangle contenant l'ovale plein temporaire
//LIGNE
bool ligne = true;//vrai si on trace une ligne
Point début; // 2 points pour une ligne
Point arrivé;
public List<Line> listeligne = new List<Line>();// une liste de ligne à vrai car outil par defaut
public struct Line// on crée une structure pour avoir une ligne complete complet (ligne+couleur+epaisseur)
{
public Point Start;
public Point End;
public Pen Pen;
public Line(Point start, Point end, Color couleur, decimal ep)
{
Start = start;
End = end;
float epp = (float)ep;
Pen = new Pen(couleur, epp);
}
}
//FIGURE LIBRE
bool figurelib = false;// vrai si on trace une figure libre
List<Line> listelignelib = new List<Line>();// une liste de ligne
List listepointslib = new List();// une liste de point
Point débutlib, arrivélib, inter1, p, p1;//points necessaire
int n = 0;//increment dans la liste de ligne
//POLYGONE
bool polygone = false;// vrai si on trace un polygone
//VIDE
public struct Polygone_couleur_epaisseur// on crée une structure pour avoir un polygone complet (poly+couleur+epaisseur)
{
public List Listep;
public Pen Pen;
public Polygone_couleur_epaisseur(List listep, Color color, decimal ep)
{
float epp = (float)ep;
Pen = new Pen(color, epp);
Listep = new List(listep);
}
}
Point pointinsere;// un point à ajouter dans la liste
public List listedepoint = new List();// une liste de points
public List listedepoly = new List();// une liste de polygone
//PLEIN
public struct Polygone_couleur_epaisseur_plein// on crée une structure pour avoir un polygone complet plein (poly+couleur+epaisseur)
{
public List Listep_p;
public SolidBrush Pen_plein;
public Polygone_couleur_epaisseur_plein(List listep, Color color)
{
Pen_plein = new SolidBrush(color);
Listep_p = new List(listep);
}
}
public List listedepolyplein = new List();// une liste de polygone plein
//GOMME
bool gomme = false;// vrai si on trace une figure libre
List<Line> listelignelibg = new List<Line>();// une liste de ligne
List listepointslibg = new List();// une liste de point
Point débutlibg, arrivélibg, inter1g, pg, p1g;//points necessaire
int ng = 0;//increment dans la liste de ligne
//SELECTION
bool selection = false;// vrai si on selectionne
Rectangle rectselect;// le rectangle servant a definir le contour
//TEXTE
bool textet = false;// vrai si on ecrit
Point emplacement;//emplacement du texte
Label texte = new Label();//cree une zone de texte artificiel
Color couleurtexte;// couleur du texte
List<texte_complet> liste = new List<texte_complet>();// liste de texte_complet
public struct texte_complet// on crée une structure pour avoir un texte complet (texte+font+location)
{
public string Texte;// texte a afficher
public Point Location;//position du texte a dessiner
public Font Font;//typographie
public Color Couleur;//couleur
public texte_complet(string texte, Font font, Color couleur, Point location)
{
Texte = texte;
Font = font;
Location = location;
Couleur = couleur;
}
}
// COPIER COLLER
bool copier = false;//si on copie
bool coller = false;//si on colle
List listeimagecoller = new List();// liste des images a coller
public struct image_largeur_hauteur// on crée une structure pour avoir une image complete (bitmap+hauteur+largeur)
{
public Bitmap Imagec;
public int Hauteur;
public int Largeur;
public Point Locationacoller;//position de l image a dessiner
public image_largeur_hauteur(Bitmap image, Point locationacoller, int largeur, int hauteur)
{
Imagec =image;
Hauteur=hauteur;
Largeur=largeur;
Locationacoller=locationacoller;
}
}
//BOOL DE CONDITION
bool enregistrer1fois = false; // si c'est deja enregistrer
bool ouvert = false; // si on ouvre une image
bool tempo = false;// vrai si temporaire
bool plein = false;// vrai si figure pleine
//INFORMATION A RECUPERER
Color couleur;// couleur à recuperer
decimal epais = 0;// epaisseur à recuperer
//TRACAGE TEMPORAIRE
Pen stylotempo = new Pen(Color.Red, 3); // couleur et epaisseur du trait en pixel
SolidBrush pinceautempo = new SolidBrush(Color.Red);// couleur de la figure
// INITIALISATION DE LA FORME
public Principale()
{
InitializeComponent();
}
//FERMETURE DE LA FENETRE
private void Principale_FormClosed(object sender, FormClosedEventArgs e)// si la fenetre est fermee
{
Application.Exit(); // ferme l'application et donc la fenetre demarrage et ferme donc par l intermediaire de demarrage_closed
}
//CHANGEMENT TAILLE ZONE DE DESSIN
private void zone_dessin_Resize(object sender, EventArgs e)// changement de taille de la zone de dessin
{
Refresh();// on reactualise la zone
}
// RESPONSABLE DESSIN
private void zone_dessin_MouseDown(object sender, MouseEventArgs e)// on appuie sur le bouton de la sourie sur la zone de dessin
{
tempo = true;//temporaire est vrai
//SELECTION
if (selection)
{
rectselect = new Rectangle(e.X, e.Y, 0, 0);
}
//RECTANGLE
if (rectangle)// si on fait un rectangle
{
if (plein == false) // si on le veut vide
{
recTempo = new Rectangle(e.X, e.Y, 0, 0); // crée un rectangle temporaire d hauteur et largeur nulles
}
else // si on le veut plein
{
recTempo_plein = new Rectangle(e.X, e.Y, 0, 0); // crée un rectangle temporaire d hauteur et largeur nulles
}
}
//OVALE
if (ovale)// si on fait un ovale
{
if (plein == false) // si on le veut vide
{
ovaTempo = new Rectangle(e.X, e.Y, 0, 0); // crée un rectangle contenant l ovale temporaire d hauteur et largeur nulles
}
else // si on le veut plein
{
ovaTempo_plein = new Rectangle(e.X, e.Y, 0, 0); // crée un rectangle contenant l ovale temporaire d hauteur et largeur nulles
}
}
//LIGNE
if (ligne)
{
début.X = e.X;// le point de depart prend les coordonnées du curseur
début.Y = e.Y;
}
//FIGURE LIBRE
if (figurelib)
{
débutlib.X = e.X; // debut prend les caracteristique du curseurs
débutlib.Y = e.Y;
listepointslib.Add(débutlib); // ajoute ce point a la liste de points
}
//GOMME
if (gomme)
{
débutlibg.X = e.X; // debut prend les caracteristique du curseurs
débutlibg.Y = e.Y;
listepointslibg.Add(débutlibg); // ajoute ce point a la liste de points
}
}
private void zone_dessin_MouseMove(object sender, MouseEventArgs e)// on tient enfonce le bouton de la sourie sur la zone de dessin
{
if(tempo)
{
//SELECTION
if (selection)
{
rectselect.Width = e.X - rectselect.X; // change les caracteristiques du rectangle d hauteur et largeur
rectselect.Height = e.Y - rectselect.Y;
}
//RECTANGLE
if (rectangle)//si on fait un rectangle
{
if (plein == false) // si on le veut vide
{
recTempo.Width = e.X - recTempo.X; // change les caracteristiques du rectangle d hauteur et largeur
recTempo.Height = e.Y - recTempo.Y;
}
else// si on le veut plein
{
recTempo_plein.Width = e.X - recTempo_plein.X; // change les caracteristiques du rectangle d hauteur et largeur
recTempo_plein.Height = e.Y - recTempo_plein.Y;
}
}
//OVALE
if (ovale)//si on fait un ovale
{
if (plein == false) // si on le veut vide
{
ovaTempo.Width = e.X - ovaTempo.X; // change les caracteristiques du rectangle contenant l ovale d hauteur et largeur
ovaTempo.Height = e.Y - ovaTempo.Y;
}
else// si on le veut plein
{
ovaTempo_plein.Width = e.X - ovaTempo_plein.X; // change les caracteristiques du rectangle contenant l ovale d hauteur et largeur
ovaTempo_plein.Height = e.Y - ovaTempo_plein.Y;
}
}
//LIGNE
if (ligne)
{
arrivé.X = e.X;// le point d arrive prend les coordonnées du curseur
arrivé.Y = e.Y;
}
//FIGURE LIBRE
if (figurelib)
{
inter1.X = e.X; // le point inter1 prend les caracteristiques du curseur
inter1.Y = e.Y;
listepointslib.Add(inter1);// ajoute a la liste de points
n = n + 1;// increment de l index de la liste de points
}
//GOMME
if (gomme)
{
inter1g.X = e.X; // le point inter1 prend les caracteristiques du curseur
inter1g.Y = e.Y;
listepointslibg.Add(inter1g);// ajoute a la liste de points
ng = ng + 1;// increment de l index de la liste de points
}
Refresh();//raffraichit l'image
}
}
private void zone_dessin_MouseUp(object sender, MouseEventArgs e)// on relache le bouton de la sourie sur la zone de dessin
{
if (polygone == false)//si on fait pas de polygone sinn tempo=false sur double clique
{
tempo = false;// temporaire est faux
}
//COPIER COLLER
if (coller)
{
listeimagecoller.Add(new image_largeur_hauteur(im_copier,new Point(e.X,e.Y), im_copier.Width,im_copier.Height));
}
//SELECTION
if (selection)
{
rectselect.Width = e.X - rectselect.X; // change les caracteristiques du rectangle d hauteur et largeur
rectselect.Height = e.Y - rectselect.Y;
if (copier)// si on fait un copier
{
selection = false;//on selection une seul fois
}
}
//RECTANGLE
if (rectangle)// si on fait un rectangle
{
if (plein)//si on le veut plein
{
if (couleur != Color.Empty)// si une couleur est choisit
{
listeRectangle_couleur_epaisseur_plein.Add(new Rectangle_couleur_epaisseur_plein(recTempo_plein,couleur));//ajoute un rectangle a la liste
}
else//sinon
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeRectangle_couleur_epaisseur_plein.Add(new Rectangle_couleur_epaisseur_plein(recTempo_plein, couleur));//ajoute un rectangle a la liste
}
}
else
{
if (couleur != Color.Empty)// si une couleur est choisit
{
if (epais != 0)// si epaisseur choisit
{
listeRectangle_couleur_epaisseur.Add(new Rectangle_couleur_epaisseur(recTempo, couleur,epais));//ajoute un rectangle a la liste
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
listeRectangle_couleur_epaisseur.Add(new Rectangle_couleur_epaisseur(recTempo, couleur,epais));//ajoute un rectangle a la liste
}
}
else
{
if (epais != 0)
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeRectangle_couleur_epaisseur.Add(new Rectangle_couleur_epaisseur(recTempo, couleur,epais));//ajoute un rectangle a la liste
}
else
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeRectangle_couleur_epaisseur.Add(new Rectangle_couleur_epaisseur(recTempo, couleur,epais));//ajoute un rectangle a la liste
}
}
}
}
//OVALE
if (ovale)// si on fait un ovale
{
if (plein)//si on le veut plein
{
if (couleur != Color.Empty)// si une couleur est choisit
{
listeOvale_couleur_epaisseur_plein.Add(new Ovale_couleur_epaisseur_plein(ovaTempo_plein, couleur));//ajoute un ovale a la liste
}
else//sinon
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeOvale_couleur_epaisseur_plein.Add(new Ovale_couleur_epaisseur_plein(ovaTempo_plein, couleur));//ajoute un ovale a la liste
}
}
else
{
if (couleur != Color.Empty)// si une couleur est choisit
{
if (epais != 0)// si epaisseur choisit
{
listeOvale_couleur_epaisseur.Add(new Ovale_couleur_epaisseur(ovaTempo, couleur, epais));//ajoute un ovale a la liste
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
listeOvale_couleur_epaisseur.Add(new Ovale_couleur_epaisseur(ovaTempo, couleur, epais));//ajoute un rectangle a la liste
}
}
else
{
if (epais != 0)
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeOvale_couleur_epaisseur.Add(new Ovale_couleur_epaisseur(ovaTempo, couleur, epais));//ajoute un rectangle a la liste
}
else
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listeOvale_couleur_epaisseur.Add(new Ovale_couleur_epaisseur(ovaTempo, couleur, epais));//ajoute un rectangle a la liste
}
}
}
}
//LIGNE
if (ligne)
{
if (couleur != Color.Empty)// si une couleur est choisit
{
if (epais != 0)// si une epaisseur est choisit
{
arrivé.X = e.X;// le point d'arrivé prend les coordonée du curseur
arrivé.Y = e.Y;
listeligne.Add(new Line(début, arrivé,couleur,epais));// on ajoute la ligne a la liste
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// epais prend la valeur choisit
arrivé.X = e.X;// le point d'arrivé prend les coordonée du curseur
arrivé.Y = e.Y;
listeligne.Add(new Line(début, arrivé, couleur, epais));// on ajoute la ligne a la liste
}
}
else// sinon
{
if (epais != 0)// si epaisseur choisit
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
arrivé.X = e.X;// le point d'arrivé prend les coordonée du curseur
arrivé.Y = e.Y;
listeligne.Add(new Line(début, arrivé, couleur, epais));// on ajoute la ligne a la liste
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
arrivé.X = e.X;// le point d'arrivé prend les coordonée du curseur
arrivé.Y = e.Y;
listeligne.Add(new Line(début, arrivé, couleur, epais));// on ajoute la ligne a la liste
}
}
}
//FIGURE LIBRE
if (figurelib)
{
if (couleur != Color.Empty)// si une couleur est choisit
{
if (epais != 0)// si une epaisseur est choisit
{
arrivélib.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélib.Y = e.Y;
listepointslib.Add(arrivélib);// ajoute a la liste de points
listepointslib.Clear();// remet la liste de points a zero
n = 0;//l increment de liste a zero
p = new Point(0, 0);// les points egalement
p1 = new Point(0, 0);
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// epais prend la valeur choisit
arrivélib.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélib.Y = e.Y;
listepointslib.Add(arrivélib);// ajoute a la liste de points
listepointslib.Clear();// remet la liste de points a zero
n = 0;//l increment de liste a zero
p = new Point(0, 0);// les points egalement
p1 = new Point(0, 0);
}
}
else// sinon
{
if (epais != 0)// si epaisseur choisit
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
arrivélib.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélib.Y = e.Y;
listepointslib.Add(arrivélib);// ajoute a la liste de points
listepointslib.Clear();// remet la liste de points a zero
n = 0;//l increment de liste a zero
p = new Point(0, 0);// les points egalement
p1 = new Point(0, 0);
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
arrivélib.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélib.Y = e.Y;
listepointslib.Add(arrivélib);// ajoute a la liste de points
listepointslib.Clear();// remet la liste de points a zero
n = 0;//l increment de liste a zero
p = new Point(0, 0);// les points egalement
p1 = new Point(0, 0);
}
}
}
//GOMME
if (gomme)
{
if (epais != 0)// si une epaisseur est choisit
{
arrivélibg.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélibg.Y = e.Y;
listepointslibg.Add(arrivélibg);// ajoute a la liste de points
listepointslibg.Clear();// remet la liste de points a zero
ng = 0;//l increment de liste a zero
pg = new Point(0, 0);// les points egalement
p1g = new Point(0, 0);
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// epais prend la valeur choisit
arrivélibg.X = e.X; // arrivé prend les caracteristiques du curseur
arrivélibg.Y = e.Y;
listepointslibg.Add(arrivélibg);// ajoute a la liste de points
listepointslibg.Clear();// remet la liste de points a zero
ng = 0;//l increment de liste a zero
pg = new Point(0, 0);// les points egalement
p1g = new Point(0, 0);
}
}
Refresh();//raffraichit l'image
}
private void zone_dessin_Paint(object sender, PaintEventArgs e)// responsable du dessin
{
zone_dessin.Cursor = Cursors.Cross;// met une croix en tant que curseur pour dessiner
zéro = new Bitmap(zone_dessin.Width, zone_dessin.Height);// crée une image vide
// à l'ouverture image à ouvrir = image2
if (image2 != null)//si elle est non nulle
{
e.Graphics.DrawImage(image2, 0, 0, zone_dessin.Width, zone_dessin.Height);//dessiner l'image
}
//COLLER
if (listeimagecoller.Count > 0)//si elle est non nulle
{
foreach (image_largeur_hauteur im in listeimagecoller)
{
e.Graphics.DrawImage(im.Imagec, new Rectangle(im.Locationacoller, new Size(im.Largeur, im.Hauteur)));
}
}
//ouverture image
if (ouvert == true) //si on ouvre une nouvelle image on vide les listes
{
listeOvale_couleur_epaisseur.Clear();// on reinitialise tout
listeOvale_couleur_epaisseur_plein.Clear();
listeRectangle_couleur_epaisseur.Clear();
listeRectangle_couleur_epaisseur_plein.Clear();
listedepoint.Clear();
listedepoly.Clear();
listedepolyplein.Clear();
listepointslib.Clear();
listeligne.Clear();
listelignelib.Clear();
listelignelibg.Clear();
listepointslibg.Clear();
inter1 = new Point(0, 0);
inter1g = new Point(0, 0);
début = new Point(0, 0);
débutlib = new Point(0, 0);
débutlibg = new Point(0, 0);
arrivé = new Point(0, 0);
arrivélib = new Point(0, 0);
arrivélibg = new Point(0, 0);
ng = 0;
n = 0;
p = new Point(0, 0);
p1 = new Point(0, 0);
pg = new Point(0, 0);
p1g = new Point(0, 0);
rectselect = Rectangle.Empty;
liste.Clear();
emplacement = new Point(0, 0);
texte = null;
couleurtexte = Color.Empty;
ouvert = false;// on ouvre une fois et remet à faux
}
//SELECTION
if (selection)//si on selectionne
{
if(rectselect != Rectangle.Empty)// si le rectangle n est pas nul
e.Graphics.DrawRectangle(stylotempo, rectselect);// tracé le rectselect
}
//TEXTE
foreach (texte_complet t in liste)// pour tout les texte complet de la liste
{
e.Graphics.DrawString(t.Texte, t.Font, new SolidBrush(t.Couleur), t.Location);// le dessiner
}
//RECTANGLE
if (rectangle)//si on fait un rectangle
{
if (tempo == true)// si il est temporaire
{
if (plein == false)
{
e.Graphics.DrawRectangle(stylotempo, recTempo);
}
else
{
e.Graphics.FillRectangle(pinceautempo, recTempo_plein); // on trace le rectangleplein temporaire
}
}
}
foreach (Rectangle_couleur_epaisseur r in listeRectangle_couleur_epaisseur) // pour tous les les rectangle le tracé
{
e.Graphics.DrawRectangle(r.Pen, r.Rect);
}
foreach (Rectangle_couleur_epaisseur_plein rp in listeRectangle_couleur_epaisseur_plein)//sinon pour tous les rectangles de la liste on trace le rectangleplein
{
e.Graphics.FillRectangle(rp.Pen_plein, rp.Rect_plein);
}
//OVALE
if (ovale)//si on fait un ovale
{
if (tempo == true)// si il est temporaire
{
if (plein == false)
{
e.Graphics.DrawEllipse(stylotempo, ovaTempo);
}
else
{
e.Graphics.FillEllipse(pinceautempo, ovaTempo_plein);
}
}
}
foreach (Ovale_couleur_epaisseur r in listeOvale_couleur_epaisseur) // pour tous les ovales le tracé
{
e.Graphics.DrawEllipse(r.Pen, r.Rect);
}
foreach (Ovale_couleur_epaisseur_plein rp in listeOvale_couleur_epaisseur_plein)//sinon pour tous les ovales de la liste on trace le ovaleplein
{
e.Graphics.FillEllipse(rp.Pen_plein, rp.Rect_plein);
}
//LIGNE
if (ligne)// si on fait une ligne
{
if (tempo)//si il est temporaire
{
e.Graphics.DrawLine(stylotempo, début, arrivé);
}
}
foreach (Line lignes in listeligne)// pour tous les lignes le tracé
{
e.Graphics.DrawLine(lignes.Pen, lignes.Start, lignes.End);
}
//FIGURE LIBRE
if(figurelib)// si on fait une figure libre
{
if (tempo)// si il est temporaire
{
if (n >= 1) // si il y a 1 ou + de 2 points
{
p = listepointslib[n - 1]; // p prend le point de depart
p1 = listepointslib[n]; // p1 prend le point d arrivé
listelignelib.Add(new Line(p, p1, couleur, epais));// ajoute une ligne a la liste avec ces 2 points
}
}
}
foreach (Line lignes in listelignelib) // pour toutes les lignes de la liste
{
e.Graphics.DrawLine(lignes.Pen, lignes.Start, lignes.End); //dessine les lignes
}
//GOMME
if (gomme)// si on fait une figure libre
{
if (tempo)// si il est temporaire
{
if (ng >= 1) // si il y a 1 ou + de 2 points
{
pg = listepointslibg[ng - 1]; // p prend le point de depart
p1g = listepointslibg[ng]; // p1 prend le point d arrivé
listelignelibg.Add(new Line(pg, p1g, Color.White, epais));// ajoute une ligne a la liste avec ces 2 points
}
}
}
foreach (Line lignes in listelignelibg) // pour toutes les lignes de la liste
{
e.Graphics.DrawLine(lignes.Pen, lignes.Start, lignes.End); //dessine les lignes
}
//POLYGONE
if (polygone)//si on fait un polygone
{
if (tempo)// si il est temporaire
{
if (plein)//si il est plein
{
if (listedepoint.Count > 1)// si il ya plus d un point dans la liste
{
e.Graphics.FillPolygon(pinceautempo, listedepoint.ToArray());// toarray pour avoir acces au rang de la liste
}
}
else// si il est vide
{
if (listedepoint.Count > 1)// si il ya plus d un point dans la liste
{
e.Graphics.DrawPolygon(stylotempo, listedepoint.ToArray());
}
}
}
}
foreach (Polygone_couleur_epaisseur pol in listedepoly)// pour toutes les polygone de la liste
{
if (pol.Listep.Count > 1)// si il ya plus d un point dans la liste
{
e.Graphics.DrawPolygon(pol.Pen, pol.Listep.ToArray());
}
}
foreach (Polygone_couleur_epaisseur_plein pol in listedepolyplein)// pour toutes les polygone plein de la liste
{
if (pol.Listep_p.Count > 1)// si il ya plus d un point dans la liste
{
e.Graphics.FillPolygon(pol.Pen_plein, pol.Listep_p.ToArray());
}
}
}
private void zone_dessin_MouseClick(object sender, MouseEventArgs e)//sur un clique sur zone de dessin
{
if (polygone)//si on fait un polygone
{
tempo = true;//temporaire est vrai
pointinsere.X = e.X;//le point a ajouter prend les coordonnées du curseur
pointinsere.Y = e.Y;
listedepoint.Add(pointinsere);//et ajouter a la liste de point
}
if (textet)
{
emplacement = e.Location;//emplacement prend l endroit du clique
texte.Location = emplacement;//donner au label virtuel
fontDialog1.ShowDialog();// affiche fenetre mise en forme
texte.Font = fontDialog1.Font;//donner au label virtuel
colorDialog1.ShowDialog();// affiche fenetre couleur
couleur = colorDialog1.Color;
Texte fenetre = new Texte();// affiche la fenetre pour le choix du texte
fenetre.ShowDialog();
texte.Text = fenetre.textBox1.Text;//donner au label virtuel
liste.Add(new texte_complet(texte.Text, texte.Font, couleur, texte.Location));// ajoute a liste des labels
}
Refresh();// on raffraichi l image
}
private void zone_dessin_MouseDoubleClick(object sender, MouseEventArgs e)// sur un double clique sur la zone de dessin
{
if (polygone)// si on fait un polygone
{
if (plein)//si on le veut plein
{
if (couleur != Color.Empty)// si la couleur est choisi
{
listedepolyplein.Add(new Polygone_couleur_epaisseur_plein(listedepoint, couleur));// on ajoute un polygone plein a la liste
}
else//sinon
{
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listedepolyplein.Add(new Polygone_couleur_epaisseur_plein(listedepoint, couleur));// on ajoute un polygone plein a la liste
}
}
else//si on le veut vide
{
if (couleur != Color.Empty)// si la couleur est choisi
{
if (epais != 0)//si l epaisseur est choisi
{
listedepoly.Add(new Polygone_couleur_epaisseur(listedepoint, couleur, epais));// on ajoute un polygone a la liste
}
else //sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
listedepoly.Add(new Polygone_couleur_epaisseur(listedepoint, couleur, epais));// on ajoute un polygone a la liste
}
}
else//sinon
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
MessageBox.Show("veuillez choisir une couleur");// on affiche un message demandant de selectionner une couleur
colorDialog1.ShowDialog();// affiche la palette
couleur = colorDialog1.Color;// couleur prend la valeur choisit
listedepoly.Add(new Polygone_couleur_epaisseur(listedepoint, couleur, epais));// on ajoute un polygone a la liste
}
}
listedepoint.Clear();// on vide la liste de point
tempo = false;//temporaire est faux
Refresh();// on raffraichi l image
}
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) //si l utilisateur valide l'enregistrement alors
{
image.Save(saveFileDialog1.FileName); // enregistre le dessin
}
private void printPreviewDialog1_Load(object sender, EventArgs e)
{
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap impr = new Bitmap(zone_dessin.Width, zone_dessin.Height);
zone_dessin.DrawToBitmap(impr, zone_dessin.ClientRectangle);
e.Graphics.DrawImage(impr, 0, 0);
}
// EVENEMENTS CLICK
//OUTILS
private void RectangleToolStripMenuItem_Click(object sender, EventArgs e)// clique outil/rectangle ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
gomme = false; // on efface pas
polygone = false;// on ne fait de polygone
figurelib = false;// on ne fait pas figure libre
ovale = false;//on ne fait pas ovale
ligne = false;//on ne fait pas ligne
rectangle = true;//on fait un rectangle
}
private void ovaleToolStripMenuItem_Click(object sender, EventArgs e)//clique outil/ovale ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
gomme = false; // on efface pas
polygone = false;// on ne fait de polygone
figurelib = false;// on ne fait pas figure libre
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = true;// on fait un ovale
}
private void polygoneToolStripMenuItem_Click(object sender, EventArgs e)//clique outil/polygone ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
gomme = false; // on efface pas
figurelib = false;// on ne fait pas figure libre
rectangle = false;//on ne fait pas un rectangle
ovale = false;//on ne fait pas ovale
ligne = false;// on ne fait pas une ligne
polygone = true;// on fait de polygone
}
private void ligneToolStripMenuItem_Click(object sender, EventArgs e)// clique outil/ligne ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
gomme = false; // on efface pas
polygone = false;// on ne fait de polygone
figurelib = false;// on ne fait pas figure libre
rectangle = false;//on ne fait pas un rectangle
ovale = false;//on ne fait pas ovale
ligne = true;// on fait une ligne
}
private void figureLibreToolStripMenuItem_Click(object sender, EventArgs e)//clique outil/figure libre ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
gomme = false; // on efface pas
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = true;// on fait figure libre
}
private void gommeToolStripMenuItem_Click(object sender, EventArgs e)//clique outil/gomme ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
selection = false;// on selectionne pas
rectselect = Rectangle.Empty;
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = false;// on ne fait figure libre
gomme = true; // on efface
}
private void selectionnerToolStripMenuItem_Click(object sender, EventArgs e)// clique outil/selectionner ou son raccourci
{
coller = false;//on colle pas
textet = false;// on ecrit pas
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = false;// on ne fait figure libre
gomme = false; // on efface pas
selection = true;// on selectionne
}
private void texteToolStripMenuItem_Click(object sender, EventArgs e)//clique outil/texte ou son raccourci
{
coller = false;//on colle pas
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = false;// on ne fait figure libre
gomme = false; // on efface pas
selection = false;// on selectionne pas
textet = true;// on ecrit
}
//STYLE
private void couleurToolStripMenuItem_Click(object sender, EventArgs e)//clique style/couleur ou son raccourci
{
colorDialog1.ShowDialog();// créer une palette
couleur = colorDialog1.Color;// on l affiche
}
private void epaisseurToolStripMenuItem_Click(object sender, EventArgs e)// clique sur style/epaisseur ou son raccourci
{
Epaisseur fenetre = new Epaisseur();// on crée une fenetre epaisseur
fenetre.ShowDialog();// on laffiche
epais = fenetre.numericUpDown1.Value;// apais prend la valeur choisit
}
private void videToolStripMenuItem_Click(object sender, EventArgs e)//clique style/remplissage/vide ou son raccourci
{
plein = false;// on fait une figure vide
}
private void pleinToolStripMenuItem_Click(object sender, EventArgs e)//clique style/remplissage/plein ou son raccourci
{
plein = true;// on fait une figure pleine
}
private void policeToolStripMenuItem_Click(object sender, EventArgs e)// clique style/police ou son raccourci
{
fontDialog1.ShowDialog();
}
//AFFICHAGE
private void barreDessinToolStripMenuItem_Click(object sender, EventArgs e)// clique sur affichage/barre dessin
{
switch (Barre_dessin.Visible)//selon la visibilité de la barre dessin
{
case true://si elle est visible
barreDessinToolStripMenuItem.Image = null; // on decoche
Barre_dessin.Visible = false;//on la cache
if (Barre_édition.Visible)//decale le panel
{
zone_dessin.Location = new Point(0, 49);
}
else
{
zone_dessin.Location = new Point(0, 24);
}
break;//fin
case false:// si invisible
barreDessinToolStripMenuItem.Image = cocher; // on coche
Barre_dessin.Visible = true;//on l'affiche
if (Barre_édition.Visible)//decale le panel
{
zone_dessin.Location = new Point(24, 49);
}
else
{
zone_dessin.Location = new Point(24, 24);
}
break;// fin
}
}
private void barreÉditionToolStripMenuItem_Click(object sender, EventArgs e)// clique sur affichage/barre édition
{
switch (Barre_édition.Visible)//selon la visibilité de la barre edition
{
case true://si elle est visible
barreÉditionToolStripMenuItem.Image = null; // on decoche
Barre_édition.Visible = false;//on la cache
if (Barre_dessin.Visible)//decale le panel
{
zone_dessin.Location = new Point(24, 24);
}
else
{
zone_dessin.Location = new Point(0, 24);
}
break;//fin
case false:// si invisible
barreÉditionToolStripMenuItem.Image = cocher; // on coche
Barre_édition.Visible = true;//on l'affiche
if (Barre_dessin.Visible)//decale le panel
{
zone_dessin.Location = new Point(24, 49);
}
else
{
zone_dessin.Location = new Point(0, 49);
}
break;//fin
}
}
//EDITION
private void nouveauToolStripMenuItem_Click(object sender, EventArgs e)// clique fichier/nouveau ou son raccourci
{
DialogResult retour = MessageBox.Show("Voulez vous enregistrer avant d'ouvrir une autre image ?", "Nouveau", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (retour == DialogResult.Yes)// si on veux enregistrer avant
{
if (enregistrer1fois == true) // meme demarche que le quitter
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height);
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
image.Save(saveFileDialog1.FileName);
}
else
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height);
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
saveFileDialog1.ShowDialog();
}
}
listeOvale_couleur_epaisseur.Clear();// on reinitialise tout
listeOvale_couleur_epaisseur_plein.Clear();
listeRectangle_couleur_epaisseur.Clear();
listeRectangle_couleur_epaisseur_plein.Clear();
listedepoint.Clear();
listedepoly.Clear();
listedepolyplein.Clear();
listepointslib.Clear();
listeligne.Clear();
listelignelib.Clear();
listelignelibg.Clear();
listepointslibg.Clear();
inter1 = new Point(0, 0);
inter1g = new Point(0, 0);
début = new Point(0, 0);
débutlib = new Point(0, 0);
débutlibg = new Point(0, 0);
arrivé = new Point(0, 0);
arrivélib = new Point(0, 0);
arrivélibg = new Point(0, 0);
ng = 0;
n = 0;
rectselect = Rectangle.Empty;
p = new Point(0, 0);
p1 = new Point(0, 0);
pg = new Point(0, 0);
p1g = new Point(0, 0);
image2 = zéro;
liste.Clear();
emplacement = new Point(0, 0);
texte = null;
couleurtexte = Color.Empty;
Refresh();
}
private void ouvrirToolStripMenuItem_Click(object sender, EventArgs e)//clique fichier/ouvrir ou son raccouci
{
ouvert = true;
openFileDialog1.InitialDirectory = saveFileDialog1.FileName; // ouvre la navigateur au dernier endroit où un fichier a été enregistrer
openFileDialog1.FileName = "nom_image"; // nom par defaut de l image
openFileDialog1.Title = "Ouvrir une image"; // titre du navigateur
openFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; // les filtres disponibles lors de la recherche
openFileDialog1.Multiselect = false; // empeche d'ouvrir plusieurs fichier en meme temps
openFileDialog1.CheckFileExists = true; // verifie l existance du fichier
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) // si l'utilisateur valide l'ouverture alors
{
string chemin = openFileDialog1.FileName; // on recupere le chemin d acces au fichier
image2 = new Bitmap(chemin); // la variable image2 prend le dessin voulu
Refresh(); // on rafraichi le tout
}
else
{
MessageBox.Show("Vous avez annulé l'ouverture", "Annuler"); // sinon ouvre une messagebox
}
}
private void enregistrersousToolStripMenuItem_Click(object sender, EventArgs e)//clique fichier/enregistrer sous
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height);// meme demarche que dans le quitter
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
saveFileDialog1.ShowDialog();
enregistrer1fois = true;// deja enregistrer vrai
}
private void enregistrerToolStripMenuItem_Click(object sender, EventArgs e)// clique fichier/enregistrer ou son raccourci
{
if (enregistrer1fois == true) // meme demarche que le quitter
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height);
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
image.Save(saveFileDialog1.FileName);
}
else
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height);
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
saveFileDialog1.ShowDialog();
}
}
private void quitterToolStripMenuItem_Click(object sender, EventArgs e)// clique fichier/quitter
{
DialogResult retour = MessageBox.Show("voulez vous enregistrez avant de quitter?", "fermeture application", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);// affiche un messagebox et retourne un resultat
if (retour == DialogResult.Yes) // si oui
{
if (enregistrer1fois == true) // si deja enregistrer
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height); // crée une nouvelle image avec les caracteristique du panel
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; // filtre par defaut d enregistrement
saveFileDialog1.Title = "Sauver une image"; // titre par defaut
image.Save(saveFileDialog1.FileName); // enregistre sans afficher le navigateur a l endroit ou l image est deja enregistree
}
else // si pas enregistrer
{
image = new Bitmap(zone_dessin.Size.Width, zone_dessin.Size.Height); // meme demarche
zone_dessin.DrawToBitmap(image, new Rectangle(zone_dessin.Location, zone_dessin.Size));
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Sauver une image";
saveFileDialog1.ShowDialog(); // mais affiche le navigateur pour choisir l emplacement
}
Application.Exit(); // ferme l'application et donc la fenetre demarrage et ferme donc par l intermediaire de demarrage_closed
}
else // si autre que oui
{
if (retour == DialogResult.No) // si non
{
Application.Exit(); // ferme l'application et donc la fenetre demarrage et ferme donc par l intermediaire de demarrage_closed
}
else // sinon soit annuler
{
MessageBox.Show("vous avez annulé la fermeture de l'application"); // affiche une messagebox
}
}
}
private void copierToolStripMenuItem_Click(object sender, EventArgs e)//clique edition/copier ou son raccourci
{
copier = true;
selection = true;// on selectionne
coller = false;//on colle pas
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = false;// on ne fait figure libre
gomme = false; // on efface pas
textet = false; // on ecrit pas
}
private void collerToolStripMenuItem_Click(object sender, EventArgs e)
{
coller = true;//on colle
copier = false;// on ne copie plus
selection = false;// on selectionne plus
polygone = false;// on ne fait de polygone
rectangle = false;// on en fait pas rectagle
ligne = false;// on ne fait pas ligne
ovale = false;// on ne fait pas un ovale
figurelib = false;// on ne fait figure libre
gomme = false; // on efface pas
textet = false;// on ecrit pas
if (rectselect != Rectangle.Empty)
{
im_copier = new Bitmap(rectselect.Size.Width , rectselect.Size.Height);// on copie la selection dans une image
zone_dessin.DrawToBitmap(im_copier, rectselect);
im_copier.Save(@"C:\Users\peillon\Documents\iut\im_copier.bmp");
}
}
private void imprimerToolStripMenuItem_Click(object sender, EventArgs e)
{
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
private void aperçuavantimpressionToolStripMenuItem_Click(object sender, EventArgs e)
{
printPreviewDialog1.ShowDialog();
}
}
}
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 14 mars 2012 à 21:13
Bonsoir, ha ben non.
trop d'info tue l'info.
Même si j'avais envie de copier/coller ton code dans un projet tout neuf, je vais:
me prendre la tête avec les noms dizaines de contrôles que tu as mis sur ton formulaire,
chercher comment tu as abonné les événements à ces contrôles, surtout si plusieurs d'entre eux sont abonnés à un même évènement,
passer du temps a chercher ou ça ne marche pas, pourquoi et comment tu voudrais que ça marche.
Poste le ou les bouts de codes utiles pour que nous puissions t'aider, dis "bonjour", "s'il vous plait", "merci" et peut être qu'on s'y penchera.
De manière générale, en c# les classes remplacent avantageusement les structures, je pense par exemple que ton code est simplifiable avec l'héritage: un rectangle c'est toujours 4 points ensuite tu en dérives un avec une bordure, autre plein et un troisième transparent...
Pour plus de lisibilité, tu peux aussi écrire une classe par fichier .cs.