D'abord la classe, elle permet d'associer l'image et sa solution, elle teste si on peut charger l'image et si la réponse est bien un entier.
Dans la négative, Nombre vaut -1
class Vbiz91
{
public Vbiz91(string Chemin, string Nbre)
{
try
{
MonImage = Image.FromFile(Chemin);
}
catch(Exception e)
{
return;
}
int res;
if (int.TryParse(Nbre, out res))
Nombre = res;
}
public int Nombre { get; set; } = -1;//si la conversion ne marche pas Nombre vaudra -1
public Image MonImage { get; set; }
}
le fichier csv
c:\temp\image 1.jpg;2
c:\temp\image 2.jpg;9
c:\temp\image 3.jpg;10
c:\temp\image 4.jpg;6
le constructeur du formulaire
List<Vbiz91> mesImages;
Vbiz91 encours;//permet d'afficher l'image en cours et d'accéder à sa réponse
public Form1()
{
InitializeComponent();
//chargement du fichier dans une collection temporaire
var images = (from l in File.ReadAllLines("vibz91.csv")//l est une ligne du fichier
let t = l.Split(';')//t est un tableau composé des élements séparés par ;
select new Vbiz91(t[0], t[1])
);
//on enlève les instances qui vallent -1 (pb dans l'import du fichier
images = images.Where(x => x.Nombre != -1);//x est une variable d'itération, un peu comme un foreach x
//on mélange, en triant selon un critère totalement aléatoire, le Guid est un hashcode plus aléatoire que ne l'est la fonction Random
mesImages = images.OrderBy(x => Guid.NewGuid()).ToList();
AfficheImage();
}
La méthode AfficheImage qu'il faut appeler pour afficher la suivante
/// <summary>
/// prend la 1ere image de la liste mélangée, l'affiche et l'enlève de la liste
/// </summary>
private void AfficheImage()
{
if (mesImages.Count == 0)
{
encours = null;
pictureBox1.Image = null;//efface le picture box
return;
}
encours = mesImages[0];
pictureBox1.Image = encours.MonImage;//on charge le picture box
mesImages.Remove(encours);//on elève cette instance de la liste
}
26 avril 2019 à 01:08