darek963 napisał(a)
A ile masz tych zdjęć, w jakiej rozdzielczości i w jakim formacie? Może wartoby było przed wrzuceniem do PictureBox-a je strech-ować żeby nie zeżreć całego RAM-u?
Jeśli nie zmieniasz rozmiaru to użyj metody
PictureBox1.Image.FromFile()
Fotki duze maja z 200kb i duze rozdzielczosci. Robie to w ten sposob:
public Image GetThumb(Bitmap myBitmap)
{
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
return myBitmap.GetThumbnailImage(100, 100, myCallback, IntPtr.Zero);
}
foreach (FileInfo plikitem in dir.GetFiles("*.jpg"))
{
Image a = Image.FromFile(plikitem.FullName);
Bitmap bit = new Bitmap(a);
PictureBox tekst = new PictureBox();
tekst.Click += new EventHandler(Klikniecie);
toolStripProgressBar1.Value = licz;
Application.DoEvents();
tekst.Image = GetThumb(bit);
tekst.Size = GetThumb(bit).Size;
if (licz % ile == 0 && licz!=0)
{
x = 0;
y = y+100;
}
tekst.Location = new System.Drawing.Point(x, y);
tekst.Tag = plikitem.FullName;
tekst.SizeMode = PictureBoxSizeMode.Zoom;
tekst.BorderStyle = BorderStyle.Fixed3D;
toolStripLabel2.Text = Convert.ToString(licz + 1);
x += GetThumb(bit).Size.Width+5;
panel2.Controls.Add(tekst);
licz++;
}
Wyszukuje sobie pliki jpg i z nich robie petle, wyswietlam je w sposob jak powyzej, ale jakos wolno to sie rysuje.
40 zdjęc wczytuje sie 15 sekund , jak ktos bedzie mialw katalogu ze 100 to bedzie poraznka. Pytam bo np ZoomBrowser czy acdsee robia to blyskawicznie wiec musi byc jakas inna metoda.