vymazanie obrazku z PictureBox

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod qwepo753 18. 3. 2011 20:33

Dobry vecer. Chcem vas poprosit o radu. Mam obrazok (vola sa napr. obr.jpg) nacitany do PictureBox-u. Chcem jeho obsah obr.jpg zmenit a znova ho nacitat. Ked sa obr.jpg pokusam zmazat, tak mi hadze chybu "Proces nemůže přistupovat k souboru c:\a\obr.jpg, protože soubor je využíván jiným procesem". Ale pred zmazanim dam picturebox.Image = null a aj tak sa chyba objavi.

pb.Image = Image.FromFile("c:\\A\\obr.jpg");
pb.Image = null;
File.Delete("c:\\A\\obr.jpg");

Skusal som aj do pictureBoxu vlozit inaksi obrazok, ale stale ta ista chyba.

pb.Image = Image.FromFile("c:\\A\\obr.jpg");
pb.Image = Image.FromFile("c:\\B\\obrB.jpg");
File.Delete("c:\\A\\obr.jpg");

Viete mi prosim poradit? Vopred dakujem.
qwepo753
Trvalý BAN

Odeslat příspěvekod Nargon 18. 3. 2011 20:44

Zkus:
Kód: Vybrat vše
pb.Image.Dispose();
pb.Image = null;
GC.Collect();
File.Delete("c:\\A\\obr.jpg");


Pokud to nepujde, tak asi je problem s tim ze ten obrazek se nezavre. A pak jedina moznost bude zmenit nacitani, aby jsis byl jisty ze se ten zdrojovy soubor zavre.
Kód: Vybrat vše
System.IO.FileStream fs = new System.IO.FileStream("c:\\A\\obr.jpg", System.IO.FileMode.Open);
pb.Image = Image.FromStream(fs);
fs.Close();
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod qwepo753 18. 3. 2011 20:49

Dakujem za rychlu odpoved. Ta prva varianta nefungovala.
Druha ano. Musim prekopat kod:)
Este raz dakujem.
qwepo753
Trvalý BAN


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků