/// <summary>
        /// fais un tableau de couleur
        /// </summary>
        public void colortab()        // creer un tableau des couleurs d'une image en fonction de la position
        {
            TableauDeCouleur = new couleur[Height, Width];
            int index = entete + entetebis;

            for (int j = 0; j < Height; j++)
            {
                for (int i = 0; i < Width; i++)
                {
                    TableauDeCouleur[j, i] = new couleur(Tableau_de_Byte[index], Tableau_de_Byte[index + 1], Tableau_de_Byte[index + 2]);
                    //TableauDeCouleur[j,i].Display();
                    index = index + 3;
                }
            }
        }
        /// <summary>
        /// applique un effet en utilisant une matrice de convolution
        /// </summary>
        /// <param name="mat"></param>
        public void matrice_de_conv(int[,] mat)
        {
            if (mat.GetLength(0) != 5 || mat.GetLength(1) != 5)
            {
            }
            else
            {
                couleur[,] tableauDeCouleurBis = new couleur[TableauDeCouleur.GetLength(0), TableauDeCouleur.GetLength(1)];

                for (int i = 0; i < Width; i++)
                {
                    for (int j = 0; j < Height; j++)
                    {
                        int resultat_de_lapplication_mat_r = 0;
                        int resultat_de_lapplication_mat_v = 0;
                        int resultat_de_lapplication_mat_b = 0;
                        tableauDeCouleurBis[i, j] = new couleur(0, 0, 0);
                        int compteur = 0;
                        for (int h = 0; h < mat.GetLength(1); h++)
                        {
                            for (int k = 0; k < mat.GetLength(0); k++)
                            {
                                if (mat[h, k] != 0)
                                {
                                    resultat_de_lapplication_mat_r += mat[h, k] * TableauDeCouleur[i, j].rouge;


                                    resultat_de_lapplication_mat_v += mat[h, k] * TableauDeCouleur[i, j].vert;


                                    compteur++;
                                    resultat_de_lapplication_mat_b += mat[h, k] * TableauDeCouleur[i, j].bleu;
                                }
                            }
                        }
                        byte resultat_de_lapplication_mat_r2 = conversion_binaire(resultat_de_lapplication_mat_r / compteur);
                        byte resultat_de_lapplication_mat_v2 = conversion_binaire(resultat_de_lapplication_mat_v / compteur);
                        byte resultat_de_lapplication_mat_b2 = conversion_binaire(resultat_de_lapplication_mat_b / compteur);

                        tableauDeCouleurBis[i, j] = new couleur(resultat_de_lapplication_mat_r2, resultat_de_lapplication_mat_v2, resultat_de_lapplication_mat_b2);
                    }
                }
                TableauDeCouleur = tableauDeCouleurBis;
            }
        }
        public Bitmap(string chemin)
        {
            Tableau_de_Byte = System.IO.File.ReadAllBytes(@chemin);


            Height = recuperer_taille(Tableau_de_Byte, entete + 8);
            Width  = recuperer_taille(Tableau_de_Byte, entete + 4);
            colortab();
            Byte[] tab2 = Tableau_de_Byte;
            Tableau_de_Byte = null;
            Tableau_de_Byte = new Byte[entete + entetebis];

            for (int i = 0; i < entete + entetebis; i++)
            {
                Tableau_de_Byte[i] = tab2[i];
            }
            couleur[,] tableauDeCouleur = new couleur[Height, Width];
        }
        public Bitmap()
        {
            Tableau_de_Byte = new byte[54];
            int hauteur = 1;
            int largeur = 1;

            do
            {
                Console.WriteLine("veuillez entrer une longeur multiple de 4");
                hauteur = Int32.Parse(Console.ReadLine());
                Console.WriteLine("veuillez entrer une largeur multiple de 4");
                largeur = Int32.Parse(Console.ReadLine());
            } while (hauteur % 4 != 0 || largeur % 4 != 0);

            header(hauteur, largeur);
            Console.WriteLine("voulez vous:\n 1-un fond aléatoire\n 2-un fond unis que vous definirez");
            int choix = Int32.Parse(Console.ReadLine());

            couleur[,] tableauDeCouleur = new couleur[hauteur, largeur];
            if (choix == 1)
            {
                Random rnd = new Random();

                for (int i = 0; i < hauteur; i++)
                {
                    for (int j = 0; j < largeur; j++)
                    {
                        int Rb = rnd.Next(0, 255);
                        int Gb = rnd.Next(0, 255);
                        int Bb = rnd.Next(0, 255);
                        TableauDeCouleur[i, j] = new couleur(conversion_binaire(Bb), conversion_binaire(Gb), conversion_binaire(Rb));
                    }
                }
            }
            if (choix == 2)
            {
                int R = -1;
                int B = -1;
                int G = -1;
                Console.WriteLine(" de quelle couleur doit etre le fond");
                do
                {
                    Console.WriteLine("entrez la valeur de la couleur rouge, entre 0 et 255");
                    R = Int32.Parse(Console.ReadLine());
                } while (R < 0 || R > 255);
                do
                {
                    Console.WriteLine("entrez la valeur de la couleur verte, entre 0 et 255");
                    G = Int32.Parse(Console.ReadLine());
                } while (R < 0 || R > 255);
                do
                {
                    Console.WriteLine("entrez la valeur de la couleur bleu, entre 0 et 255");
                    B = Int32.Parse(Console.ReadLine());
                } while (R < 0 || R > 255);

                for (int i = 0; i < hauteur; i++)
                {
                    for (int j = 0; j < largeur; j++)
                    {
                        tableauDeCouleur[i, j] = new couleur(conversion_binaire(B), conversion_binaire(G), conversion_binaire(R));
                    }
                }
            }
            TableauDeCouleur = tableauDeCouleur;
            Height           = hauteur;
            Width            = largeur;
        }