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?