Code:
// kreiramo sliku velicine 150 x (150*8) u koju ce se smestiti 8 slika velicine 150x150 vertikalno naslagano
Bitmap bitmap = new Bitmap(150, 150 * 8);
// kreiramo Graphics objekat koji ce nam pomocu da crtamo po nasoj slici koju smo prethodno kreirali
Graphics g = Graphics.FromImage(bitmap);
// pod pretpostavkom da su slike na hard disku smestene u datotekama pod sledecim imenima:
// slika00.jpg, slika 01.jpg, ..., slika07.jpg
// kreiracemo petlju od 0 do 7 koja ce ucitati ove slike
for(int i = 0; i < 8; i++) {
// ucitavamo sliku sa lokacije "D:\slika##.jpg" gde je ## broj slike, u ovom slucaju promenljiva i
Bitmap tmp = new Bitmap("d:\\slika" + i.ToString("00") + ".jpg");
// ovde bi trebalo da je provera da li je slika ucitana, mada samo ovakva provera != null nije bas dovoljna
// jer u slucaju da dodje do greske pri ucitavanju slike desice se exception
// pa bi u sustini trebalo ceo kod u petlji staviti u try { } catch { } blok
if(tmp != null) {
// iscrtavamo ucitanu sliku na nasu veliku sliku na koordinatama 0 x (i*150) sto znaci da se
// u svakoj iteraciji Y koordinata uvecava za 150
g.DrawImage(tmp, 0, i * 150);
// metodom Dispose se oslobadjaju resursi koji su zauzeti ucitanom slikom
tmp.Dispose();
}
}
// ovde se oslobadjaju resursi zauzeti objektom Graphics
g.Dispose();
// kreiranu sliku zatim snimamo po zelji (u ovom slucaju na "d:\slika.jpg")
// format snimljene slike nije odredjen ekstenzijom imena datoteke vec ovim drugim parametrom metode Save
bitmap.Save("d:\\slika.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
// sada moze i za ovu snimljenu sliku da se odradi Dispose, ako se vise nece koristiti
bitmap.Dispose();
Nadam se da je sada jasnije.
Pozdrav.