Ciao a tutti.
Vorrei capire bene cosa succede in sottofondo quando costruiamo una bitmap leggendola da un file.
Es.:
Bitmap b = new Bitmap("C:\ciao.bmp");
Immagino che b finisca in memoria e ciao.bmp rimanga li dov'era sul disco C. E fin qui (spero) va bene.
Che succede se voglio copiare in una bitmap b2 solo una porzione 100 x 100 di una bitmap b1 1000 x 1000 contenuta su C nel file C:\b1.bmp?
Bitmap b2 = new Bitmap(100, 100) ----> memoria occupata M 100x100
Graphics g = Graphics.FromImage(b2) ----> memoria x graphics
g.DrawImage(b1, 0, 0, new Rectangle(0,0,100,100)) ---> dati da b1 a M
g.Dispose() ---> liberata memoria per graphics
Quando avviene il trasferimento dei dati da b1 a M, b1 resta sul disco C no? Quindi tutta la memoria che ho usato è M?
Ah scusate ho detto una fesseria, b1 è pure in memoria!
Il fatto è che io ho una bitmap di 10000x10000 su disco ma un mio programma ne deve usare una porzione piccolissima per volta. Come posso fare? La Marshal.Copy fa al caso mio?

Rispondi quotando

