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 :

Informations supplémentaires : Le processus ne peut pas accéder au fichier!


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut Informations supplémentaires : Le processus ne peut pas accéder au fichier!
    Bonjours!
    Voilà, mon problème, c'est quand je copie une image dans un dossier grâce au code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Graphics\\System\\IconSet.png"))
                            File.Copy(this.folderBrowserDialog1.SelectedPath + "\\Graphics\\System\\IconSet.png", "Projet\\Graphics\\System\\IconSet.png");
    Puis j'utilise l'image, qui change ma picturebox, avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                if (File.Exists("Projet\\Graphics\\System\\IconSet.png"))
                    this.pictureBox2.Image = new Bitmap("Projet\\Graphics\\System\\IconSet.png");
    Puis pour supprimer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                if (File.Exists("Projet\\Graphics\\System\\IconSet.png"))
                    File.Delete("Projet\\Graphics\\System\\IconSet.png");
    J'essaye, mais là, j'ai une erreur comme quoi, l'image est utiliser par un autre processus!
    Donc, ma question, comment arrêter l'utilisation de l'image une fois charger!

    Merci d'avance!

  2. #2
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Hello,

    Je pense que le plus simple consiste à charger ton fichier dans un "MemoryStream" et à passer ce Stream au constructeur Bitmap. Ainsi, tu chargeras l'image à partir du contenu mémoire et plus de handle sur le fichier que tu pourras donc supprimer
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Je voudrais un exemple de code!
    Car j'ai fait comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoryStream memoStream1 = new MemoryStream("Projet\\Graphics\\System\\IconSet.png");
    Mais sa fait une erreur a ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new MemoryStream("Projet\\Graphics\\System\\IconSet.png")

  4. #4
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Le constructeur de MemoryStream n'accepte pas directement de fichier, mais il peut par contre prendre un tableau de Byte..

    La méthode File.ReadAllBytes ouvre un fichier, lit son contenu, puis ferme le fichier.

    Tu peux donc faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MemoryStream memoStream1 = new MemoryStream(File.ReadAllBytes("Projet\\Graphics\\System\\IconSet.png"));
    
    this.pictureBox2.Image = new Bitmap(memoStream1);
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Donc, là sa supprime sans erreur, mais sa change pas l'image de la pictureBox3!
    J'ai changer pictureBox2 en pictureBox3!
    Il y a déjà une image dessus, mais il change pas avec celui qu'on veut!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par iVarlix Voir le message
    Donc, là sa supprime sans erreur, mais sa change pas l'image de la pictureBox3!
    J'ai changer pictureBox2 en pictureBox3!
    Il y a déjà une image dessus, mais il change pas avec celui qu'on veut!
    Tu ne nous as pas montré comment tu t'y prends pour les objets "pictureBox2" et "pictureBox3".
    D'autre part, j'ai une petite astuce pour toi : lorsque tu veux en savoir plus sur une classe Microsoft comme par exemple "MemoryStream", tu mets ton curseur sur le mot "MemoryStream" et tu fais F1 pour voir l'aide. Et là il t'affiche l'aide en ligne (locale ou même internet) de l'objet en question. Ainsi tu aurais pu voir par exemple quels sont les paramètres à passer à "MemoryStream" et même des exemples d'utilisation.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Voici mon code:
    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
            private void LoadTimer1_Tick(object sender, EventArgs e)
            {
                ++this.time;
                ++this.toolStripProgressBar1.Value;
                if (this.time == 50)
                    Process.Start("Projet\\Game.exe");
                if (this.time != 100)
                    return;
                this.time = 0;
                this.LoadTimer1.Enabled = false;
                MemoryStream memoStream1 = new MemoryStream(File.ReadAllBytes(@"Projet\Graphics\System\IconSet.png"));
                this.pictureBox2.Image = new Bitmap(memoStream1);
                IconSelector iconselect = new IconSelector();
                iconselect.pictureBox1.Image = new Bitmap(memoStream1);
                memoStream1.Close();
                if (File.Exists("Projet\\Graphics\\System\\IconSet.png"))
                    File.Delete("Projet\\Graphics\\System\\IconSet.png");
            }
    Est-ce fait une faute de frappe?
    Car l'image apparaît pas!

    Voici le code de l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            private void pictureBox3_DoubleClick(object sender, EventArgs e)
            {
                IconSelector iconSelector = new IconSelector();
                int num1 = (int)iconSelector.ShowDialog();
                this.quests[this.listBox1.SelectedIndex].IconIndex = iconSelector.iconIndex;
                Graphics graphics = Graphics.FromImage(this.pictureBox3.Image);
                graphics.Clear(Color.Transparent);
                int num2 = this.quests[this.listBox1.SelectedIndex].IconIndex / 16;
                int num3 = this.quests[this.listBox1.SelectedIndex].IconIndex - num2 * 16;
                graphics.DrawImage((Image)this.img, new Rectangle(0, 0, 24, 24), new Rectangle(num3 * 24, num2 * 24, 24, 24), GraphicsUnit.Pixel);
                this.label11.Text = this.quests[this.listBox1.SelectedIndex].IconIndex.ToString();
                this.pictureBox3.Refresh();
            }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Maintenant que tu nous as montré le code, on comprend pourquoi l'image ne s'affiche pas.
    Quand tu fais :

    Citation Envoyé par iVarlix Voir le message
    Tu lui "coupes l'herbe sous les pieds". En fermant le flux encore utilisé pour le bitmap, ce dernier ne risque pas de s'afficher. Laisse donc ce flux ouvert sinon le bitmap ne peut pas afficher l'image.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Bonjours!
    J'ai réussi a résoudre le problème, car j'utiliser une variable img!
    Alors j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (File.Exists("Projet\\Graphics\\System\\IconSet.png"))
    {
        MemoryStream memoStream1 = new MemoryStream(File.ReadAllBytes("Projet\\Graphics\\System\\IconSet.png"));
        this.pictureBox3.Image = new Bitmap(memoStream1);
        memoStream1.Close();
    }
    this.img = new Bitmap(this.pictureBox3.Image);
    Car la variable initialise au moment de l’exécution du programme!
    C'est pour ça qui changer pas!

    Mais le seul problème, je peux pas le supprimer, si je supprime, les images ce met par défaut!

Discussions similaires

  1. Réponses: 18
    Dernier message: 28/10/2009, 23h17
  2. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  3. Réponses: 7
    Dernier message: 22/08/2008, 16h20
  4. Réponses: 5
    Dernier message: 26/06/2008, 12h28
  5. Erreur : Le processus ne peut pas accéder au fichier
    Par victor72 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 16/03/2007, 14h50

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