blog45gel
Messages postés2Date d'inscriptionlundi 14 juillet 2008StatutMembreDernière intervention12 août 2009
-
24 juil. 2009 à 16:23
jerome_
Messages postés10Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention13 août 2010
-
13 août 2010 à 16:00
Bonjour,
Je me demande où est le problème de ce code, car quand je le lance (avec SharpDevelop) mon petit programme il fonctionne la première fois (c'est à dire qu'il copie le fichier sourcefile vers destfile) et à la deuxième ouverture de mon OpenFileDialog il y a une erreur au niveau de File.copy!?
Pourtant lorsque l'on retire les lignes this.pictureBox1.SizeMode PictureBoxSizeMode.StretchImage et this.pictureBox1.Image Image.FromFile(destfile) le programme copie et écrase tant que l'on veut destfile.
blog45gel
Messages postés2Date d'inscriptionlundi 14 juillet 2008StatutMembreDernière intervention12 août 2009 12 août 2009 à 22:59
Bonsoir
Pour répondre a LEPROV c'est bien à cause de Image.FormFile que File.Delete ne fonctionne pas mais le lien en question ne convient pas tout a fait avec le problème alors voici le bon lien qui a résolu mon souci:
jerome_
Messages postés10Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention13 août 2010 12 août 2010 à 17:10
Bonjour,
j'ai également le même problème avec File.copy : Je développe une appli en C# WPF sous win 7.
J'ai mis une image à l'intérieur d'un canvas afin d'y dessiner dessus et enregistrer l'image modifiée.
Le problème vient lorsque j'essai de sauvegarder sur le même fichier cela me dis : la ressource est en cours d'utilisation.
Pourtant j'ai fais un clear sur le canvas mais cela ne doit pas être suffisant :s
Je ne vois aucune fonction dispose ou close sur mon objet image donc je ne sais pas quoi faire d'autre pour libérer cette image.
Code C# :
string fichierOriginal; // contient le chemin de mon fichier original
InkCanvas canvasPlan; // inkcanvas
...
//affectation de l'image dans le canvas
Image imageCanvas = new Image();
imageCanvas.Source = new BitmapImage(new Uri(fichierOriginal, UriKind.RelativeOrAbsolute));
canvasPlan.Children.Add(imageCanvas);
//vide le canvas
/*foreach (Image uneImage in canvasPlan.Children.OfType())
{
uneImage.Source = new BitmapImage(); // j'ai essayé d'enlever la source mais ca ne change rien
}*/
canvasPlan.Children.Clear(); //supprime les objets a l'intérieur du canvas
canvasPlan.Strokes.Clear(); //supprime les traits de stylet
//essai d'ecraser le fichier original avec la modif
File.Copy(fichierJpg, fichierOriginal, true); //BUG ici : ressource non disponible : fichierOriginal
Etant en WPF je n'ai pas la fonction Image.FromStream. J'ai donc rajouté la référence System.Drawing pour l'avoir.
Si j'applique la solution proposée je me retrouve avec un autre probleme : les deux types image ne sont pas compatibles.
//affectation de l'image dans le canvas
FileStream fs;
fs = new FileStream(pathImg, FileMode.Open, FileAccess.Read);
imageCanvas = System.Drawing.Image.FromStream(fs); //BUG : imageCanvas est de type System.control.image est ne veut pas de l'autre image
fs.Close();
canvasPlan.Children.Add(imageCanvas); //veut un UIElement (accepte System.control.image mais refuse System.Drawing.Image)