Bonjour ,
J'ai un petit soucis, je souhaite afficher des icons sur certains de mes boutons qui sont générés dynamiquement en fonction d'une table sql(1boutons par ligne), j'ai donc ajouté un champ Image dans ma table.

Pour gérer cette table j'ai un formulaire, auquel j'ai ajouté une picture box où l'image sera affichée.
J'ai ajouté un bouton parcourir pour aller charger un fichier .ico, que je met dans ma picture box de cette façon

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
private void parcourir_Click(object sender, EventArgs e)
        {
            OpenFileDialog o = new OpenFileDialog();
            o.InitialDirectory = "c:\\";
            o.Filter = "Icone (*.ico)|*.ico";
            o.RestoreDirectory = true;
            if (o.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(o.FileName);
            }
        }
Lorsque l'utilisateur enregistre, j'essaie de convertir mon image en tableau de byte, c'est là que le souci se pose

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
private void bt_save_Click(object sender, EventArgs e)
        {
 
            DataRowView maRow = (DataRowView) maTableBindingSource.Current;
            if (pictureBox1.Image != null)
            {
                 MemoryStream stream = new MemoryStream();
                 pictureBox1.Image.Save(stream,System.Drawing.Imaging.ImageFormat.Icon);
                 maRow["Icone"] = stream.ToArray();
            }
            else
            {
                r["Icone"] = DBNull.Value;
            }
            maTableBindingSource.EndEdit();
            monTableAdapter.Update(monDataSet);
            majContexte(0);
        }
L'erreur se produit lors de la méthode .Save()
System.ArgumentNullException La valeur ne peut pas être null. Nom du paramètre*: encoder.
Par contre elle ne se produit qu'avec System.Drawing.Imaging.ImageFormat.Icon, ca marche très bien en Bmp ou jpeg sauf que je souhaite garder la transparence de l'icon.

Si quelqu'un a une solution ou des suggestions, je suis tout ouïe.

Merci d'avance.