Ciao a tutti,
sto cercando si capire perche quando nel mio progetto per caricare delle immagini e cosi lento
mi spiego meglio: sto svillupando un progetto in C# con WInforms e ho un panello che ospita un array di foto ,posto il codice :
public partial class ArtLabel : Form
{
private System.Windows.Forms.PictureBox[] imgArray;
public static string ImageToShow;
private int NumOfFiles;
private string[] imgExtension;
public ArtLabel()
{
InitializeComponent();
panel1.VerticalScroll.Visible = true;
panel1.VerticalScroll.Enabled = true;
// panel1.VerticalScroll.Maximum = 1000;
panel1.VerticalScroll.Value = panel1.VerticalScroll.Maximum;
}
private void ArtLabel_Load(object sender, EventArgs e)
{
GetPicture4(@"D:\\Music\\");
}
private bool ThumbnailCallback()
{
return false;
}
private void ARR(int cNumber, string exc)
{
int Xpos = 8;
int Ypos = 8;
Image img;
Image.GetThumbnailImageAbort myCallback =
new Image.GetThumbnailImageAbort(ThumbnailCallback);
imgArray = new System.Windows.Forms.PictureBox[cNumber]; // assign number array
for (int i = 0; i < cNumber; i++)
{
imgArray[i] = new System.Windows.Forms.PictureBox();
if (Xpos > 432) // six images in a line
{
Xpos = 8; // leave eight pixels at Left
Ypos = Ypos + 72; // height of image + 8
}
imgArray[i].Left = Xpos;
imgArray[i].Top = Ypos;
imgArray[i].Width = 64;
imgArray[i].Height = 64;
imgArray[i].Visible = true;
imgArray[i].SizeMode = PictureBoxSizeMode.StretchImage;
img = Image.FromFile(exc);
imgArray[i].Tag = exc;
imgArray[i].Click += new System.EventHandler(ClickImage);
imgArray[i].Image = img.GetThumbnailImage(64, 64, myCallback, IntPtr.Zero);
panel1.Controls.Add(imgArray[i]);
Application.DoEvents();
Xpos = Xpos + 72;
}
}
private List<string> GetPicture4(string Folder)
{
DirectoryInfo dir = new DirectoryInfo(Folder);
List<string> str = new List<string>();
FileInfo[] files = dir.GetFiles("*.jpg", SearchOption.AllDirectories);
int NumOfFiles = files.Length;
imgExtension = new string[NumOfFiles];
for (int i = 0; i < NumOfFiles; i++)
{
ARR(i, files[i].FullName);
str.Add(files[i].FullName);
}
return str;
}
private void ClickImage(Object sender, System.EventArgs e)
{
ImageToShow = ((System.Windows.Forms.PictureBox)sender).Tag.ToString();
Direcoty_Prova.ViewPicture f = new Direcoty_Prova.ViewPicture();
f.ShowDialog();
}
}
Questo e il codice completo del Form .
Adesso quando vado a chiamare questo Form se metto come indirizzo Folder un cartella con più di 30 foto(bassa risoluzione)devo aspettare più di 2 minuti
,(credo che sia un po troppo) e questo non è il risultato che desidero.
Dove sbaglio nel mio codice che cause questa lunga attesa nel caricare le foto ?
Grazie di tutto.
Buona giornata