Witam! Jestem początkujący, robię prostą przeglądarkę JPGów. Mam problem ze zwalnianiem pamięci (po bitmapach)
Zmajstrowałem taki kod:
Bitmap MyImage;
public void ShowMyImage(int PicBoxNo, String fileToDisplay)
{
MyImage = new Bitmap(fileToDisplay);
if (PicBoxNo == 1)
{
// Stretches the image to fit the pictureBox.
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = (Image)MyImage;
// Stretches the image to fit the pictureBox.
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox2.Image = (Image)MyImage;
}
if (PicBoxNo == 2)
{
// Stretches the image to fit the pictureBox.
pictureBox3.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox3.Image = (Image)MyImage;
}
if (PicBoxNo == 3)
{
// Stretches the image to fit the pictureBox.
pictureBox4.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox4.Image = (Image)MyImage;
}
if (PicBoxNo == 4)
{
// Stretches the image to fit the pictureBox.
pictureBox5.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox5.Image = (Image)MyImage;
}
}
Mam 5 pictureboxów, podaje nazwy plików i wyświetlam JPG w odpowiednich PicBOX-ach.
Do tego mam obsługę "przewijania" (zmiana strony ze zdjęciami, po 4-5 zdjec na stronę).
private void button3_Click(object sender, EventArgs e)
{
if (PageOfImages > 1)
{
PageOfImages--;
label1.Text = PageOfImages.ToString();
MyImage.Dispose();
ShowAllImages();
}
}
private void button4_Click(object sender, EventArgs e)
{
if (PageOfImages < MaxPageOfImages)
{
PageOfImages++;
label1.Text = PageOfImages.ToString();
MyImage.Dispose();
ShowAllImages();
}
}
Wszystko działa dobrze jak mam do 40-48 zdjęć (czyli 10-12 stron zdjęć). Problem pojawia się jak jest więcej. Sypie oczywiście błędem "out of Memory".
Pytanie - jak sobie z tym poradzić? Jak i gdzie (w którym miejscu kodu) zwolnić pamięć po zdjęciach (które już nie są wyświetlane, tj. nie są z wyświetlanej strony)?
Dzieki!
Der