IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Problème de fichiers verrouillés


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut [C#]Problème de fichiers verrouillés
    Bonjour à tous,

    J'affiche une image à partir d'un fichier dans une picturebox.
    Une fonction génère une vignette de l'image avant de l'affecter à la picturebox.
    Or le fichier d'origine est ensuite vérrouillé et ne peux plus être supprimé.

    Quelqu'un a-t-il une solution à ce problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Remplissage de la picturebox
    _pb.BackgroundImage = this.picture.Thumbnail( fic, _pb.Width, _pb.Height );
     
        /// <summary>
        /// Génère un apercu pour une image
        /// </summary>
        /// <param name="fichier">Chemin du fichier image</param>
        /// <param name="width">largeur maxi de la vignette</param>
        /// <param name="height">hauteur de la vignette</param>
        /// <returns>image de la vignette</returns>
        public Image Thumbnail( string fichier, int width, int height )
        {
            Image original = null;
            Bitmap tn = null;
            Graphics g = null;
     
            try
            {  
                // Chargement du fichier original
                original = Image.FromFile(fichier);
     
                // Calcul des dimensions
                decimal diff = 0;
                if (width < height)
                {
                    diff = ((decimal)width / (decimal)original.Width);
                    height = (diff > 0 ? (int)(original.Height * diff) : original.Height);
                }
                else
                {
                    diff = ((decimal)height / (decimal)original.Height);
                    width = (diff > 0 ? (int)(original.Width * diff) : original.Width);
                } // Fin de : if (width < height)
     
                // Création d'un nouveau bitmap
                tn = new Bitmap(width, height);
                g = Graphics.FromImage( tn );
     
                g.InterpolationMode = InterpolationMode.HighQualityBilinear;
                g.DrawImage(original, new Rectangle(0, 0, tn.Width, tn.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel);
            }
            catch { }
            finally
            {
                // Libération des ressources
                if( original != null )original.Dispose();
                original = null;
                if (g != null) g.Dispose();
                g = null;            
            }      
     
          return (Image)tn;
      } // Fin de : Thumbnail
    Merci d'avance
    Bonne journée

    Mickaël

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    La méthode Image.FromFile bloque le fichier. Il vaut mieux passer par un Stream avec la méthode Image.FromStream.

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using(FileStream stream = new FileStream("monImage.jpeg", FileMode.Open))
    {
      pictureBox1.Image = Image.FromStream(stream);
    }
    // Si besoin, on supprime le fichier
    try
    {
      File.Delete("monImage.jpeg")
    }
    catch
    {
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Par défaut
    Merci beaucoup StormimOn,

    Effectivement le problème venait de là

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Delphi 3] Problème avec fichier ressource .RES
    Par delphim dans le forum EDI
    Réponses: 2
    Dernier message: 28/06/2005, 18h11
  2. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17
  3. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 09h13
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo