U programu učitavam jednu veliku sliku, iz koje treba da isečem manju, i tu manju sliku treba da prikažem u picture box.
Velika slika se nalazi u resource, a ta velika je zapravo sastavljena od puno malih slika. Imam funkciju koja izračunava položaj malih slika na toj velikoj.
Da bi pojednostavio umesto funkcije koja računa položaj male slike stavio sam samo new Rectangle(50,50,150,100).
Ovaj deo je u Load delu forme:
Ovaj deo se koristi svaki put kad treba da se crta mala slika:
Problem je u sledećem, kada se učita velika slika, zauzeće memorije skoči sa početnih 20ak, duplo tj. na 40-50 MB.
S obzirom da se crtanje često obavlja, ukoliko bih svaki put kreirao novu veliku sliku (SlikaResurs), pa je onda uništavao zbog uštede u memoriji, crtanje bi bilo jako sporo.
U čemu je greška? Kako bi bilo pravilno ovo uraditi?
Velika slika se nalazi u resource, a ta velika je zapravo sastavljena od puno malih slika. Imam funkciju koja izračunava položaj malih slika na toj velikoj.
Da bi pojednostavio umesto funkcije koja računa položaj male slike stavio sam samo new Rectangle(50,50,150,100).
Ovaj deo je u Load delu forme:
Code:
Bitmap SlikaResurs = new Bitmap((Image)Resource1.ResourceManager.GetObject("VelikaSlika")); //to je velika slika iz resursa
Bitmap SlikaResurs = new Bitmap((Image)Resource1.ResourceManager.GetObject("VelikaSlika")); //to je velika slika iz resursa
Ovaj deo se koristi svaki put kad treba da se crta mala slika:
Code:
Bitmap manjaSlika = SlikaResurs.Clone(new Rectangle(50,50,150,100), SlikaResurs.PixelFormat); //pravimo malu sliku dimenzija 150x100 piksela
pictureBox1.Image = manjaSlika; //prikaz slike
Bitmap manjaSlika = SlikaResurs.Clone(new Rectangle(50,50,150,100), SlikaResurs.PixelFormat); //pravimo malu sliku dimenzija 150x100 piksela
pictureBox1.Image = manjaSlika; //prikaz slike
Problem je u sledećem, kada se učita velika slika, zauzeće memorije skoči sa početnih 20ak, duplo tj. na 40-50 MB.
S obzirom da se crtanje često obavlja, ukoliko bih svaki put kreirao novu veliku sliku (SlikaResurs), pa je onda uništavao zbog uštede u memoriji, crtanje bi bilo jako sporo.
U čemu je greška? Kako bi bilo pravilno ovo uraditi?