Background d'une Windows Form

Résolu
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 23 févr. 2012 à 13:07
 Utilisateur anonyme - 23 févr. 2012 à 22:58
Bonjour,

Je permet à l'utilisateur via un OpenFileDialog de changer l'image de fond :

frmAccueil.BackgroundImage = Image.FromFile(C:\Maphoto.jpg)


Cependant, a la fermeture de l'application, cela n'enregistre pas les changements.

Savez vous comment enregistrer ce changement de propriete ?

cordialement

23 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
23 févr. 2012 à 15:50
Salut

tu peux te servir du setting
project -> properties -> settings
tun declare ta variable dans ton cas c'est le
chemin du fichier image
par ex
Name type scope value
mypath string user

dans le code
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If My.Settings.mypath <> String.Empty Then
            Me.BackgroundImage = Image.FromFile(My.Settings.mypath)
        End If


    End Sub


dans le code du openfiledialog
My.Settings.mypath = OpenFileDialog1.FileName
 My.Settings.Save()
3
Utilisateur anonyme
23 févr. 2012 à 22:58
va dire bonjour au poissons

C'est ce que j'ai fait! comment sais-tu?

Moundir:
je ne saurais certainement jamais pourquoi j'avais cette erreur et toi non...

De toute façon je trouvait nôtre solution un peu lourde, ne cherche pas...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
Utilisateur anonyme
23 févr. 2012 à 13:28
Bonjour,

Il faudrait que tu stockes le chemin de l'image dans un fichier texte, base de données ou autre, à chaque changement.

Au démarrage tu lis le chemin de l'image en question et tu l'affiches en fond d'écran.



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 13:31
Bonjour et merci,

Etonnant, je pensais que l'on pouvait enregistrer les changements


Dans ce cas la, comment faire ? si je décide de mettre le chemin de l'image dans un fichier texte. Mettre le fichier texte dans les ressources ?

Je ne vois pâs trop comment m'y prendre.

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
23 févr. 2012 à 14:01
Tu as raison,

Il faut arriver à changer le My.Resources. 'ton fichier jpg'
Je cherche un peu...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 14:20
Encore une fois Acive, un grand merci pour te pencher sur mon problème

Je ne vois pas ce que tu veux faire avec le My.Ressources. Car mon BackGroundImage est en local et l'image n'est pas dans les ressources.

Sinon j'ai une autre solution, je ne sais pas si c'est faisable, par exemple, laisser le choix à l'utilisateur de la photo, ensuite on la copie dans les ressources et on la renomme par exemple en Imagedefond.jpeg. Et si on change d'image alors celle qui se trouve dans les ressources sera effacée et remplacée.
0
Utilisateur anonyme
23 févr. 2012 à 14:24
Oui c'est un peu ça que voulais faire, mais je cherche à voir comment on change l'image dans les ressources.

Mais il est 9 heures du mat chez moi et mon cerveau a du mal à démarrer...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 14:47
Mais il est 9 heures du mat chez moi et mon cerveau a du mal à démarrer...


Je comprends ^^

J'ai trouvé un contournement de solution.

Lorsque l'utilisateur sélectionne une image, on la copie avec toujours le même nom dans le dossier de l'application, puis a chaque load de la form, on fait appel a cette image pour la définir (vu qu'elle sera toujours dans le dossier de l'appli avec le même nom...

Je vais tenter et je te redis, sauf si tu trouves une meilleure solution
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 14:56
Oui ca fonctionne bien comme ça !

Seul inconvénient, a chaque load de la form on va recharger l'image.

Atout : si jamais l'image n'existe plus alors celle qui est dans les ressources sera affichée automatiquement :)

A++
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 15:02
Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus.


JE n'ai rien dit... retour a la case départ...
0
Utilisateur anonyme
23 févr. 2012 à 15:02
Ok,
J'avais testé de la remplacer (l'image) dans le dossier Ressources et ça ne changeait pas...

Du coup avec ta solution, on a pas de fichier texte pour y stocker le chemin mais un copier/coller de l'image, pourquoi pas?

Mais on ne change toujours pas le My.ressources... ça doit pouvoir se faire aussi.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
23 févr. 2012 à 15:04
Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus.


Tu as du le laissé ouvert avec paint ou quelque chose du genre, non?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 15:10
Non l'image n'est ouverte nulle part sauf dans mon Background, mais j'ai pris soin de mettre le Background à Nothing avant....

JE ne comprends pas :/

Merci pour ton aide !
0
Utilisateur anonyme
23 févr. 2012 à 15:17
Si... je viens de tester ça:
Imports System.IO
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ChangeBackground()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Fich As OpenFileDialog = New OpenFileDialog
        Fich.ShowDialog()
        Me.Text = Fich.FileName
        FileCopy(Fich.FileName, Application.StartupPath & "\Logo.jpg")
        ChangeBackground()
    End Sub

    Private Sub ChangeBackground()
        If File.Exists(Application.StartupPath & "\Logo.jpg") = True Then
            Me.BackgroundImage = Image.FromFile(Application.StartupPath & "\Logo.jpg")
        End If
    End Sub
End Class



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 15:31
Merci pour ton code, mais toujours la même erreur ...
0
Utilisateur anonyme
23 févr. 2012 à 15:39
Ton fichier image doit être ouvert quelque-part... chez moi ça marche bien.

Regarde dans le gestionnaire des tâches (Ctrl+Alt+Supp) si tu vois son processus en cours.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
23 févr. 2012 à 15:53
Merci Shay,
J'avais oublié celui-la...
décidément aujourd'hui ça "rame" chez moi...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 15:54
Je viens de regarder j'ai même redemarré mon ordinateur, et je n'ai ouvert que l'application, et j'ai toujours la même erreur "Le processus ne peut pas accéder au fichier 'backgroundAccueil.jpg', car il est en cours d'utilisation par un autre processus."

Je ne comprends absolument pas. D'un sens cela me parait logique si cette image est utilisée par VB pour le backgroundImage, mais pourquoi y arrives tu toi ?
0
Utilisateur anonyme
23 févr. 2012 à 15:57
Laisse voir ton code, sinon essaye la méthode de Shay, désolé je dois sortir je reviens dans quelques heures.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
23 févr. 2012 à 15:59
J'utilise ton code ...

Je vais essayer celui de ShayW (d'ailleurs merci)

No souci
0
Rejoignez-nous